内部类和方法应该如何进行测试?

3

可能是重复问题:
测试内部类

我喜欢将我的测试类放在一个单独的程序集中,这导致测试内部类出现了一些问题。由于内部类和方法仅在程序集内可见,因此我的测试程序集无法看到这些类和方法。如何有效地测试这些类?我需要使用反射来访问要测试的方法吗?


1
这个问题之前已经被提问过了:https://dev59.com/xkbRa4cB1Zd3GeqP3L_e - Gerrie Schenck
1
确实,它也在那里给出了答案。测试您的顶级API,而不是您的内部类。如果必须,您可以使用InternalsVisibleTo。 - Peter
抱歉...是否可以将该问题标记为重复? - Tomas Jansson
4个回答

6

1
当然你可以这样做,但对我来说感觉很奇怪。 - Tomas Jansson

1

我的首选方案是通过使用公共类和方法间接测试它们,就像私有类和方法一样。

不过这取决于情况,我倾向于进行TDD,并且最终几乎不使用internal。我不太喜欢在生产代码中添加属性来使其可测试的想法。


1
你可以将功能重构为一个新类,其中包含一个公共方法,然后测试该方法。

0

我认为你可能会质疑你的内部类在哪里被使用以及其目的是什么。

如果它存在,那么它一定有自己的使命。而这个使命可能会影响到某些东西;例如另一个对象的状态。

因此,通过测试“另一个”对象,您可能有机会间接地测试您的内部类。

但是,好的开始可以是质疑是否真的有必要拥有那个内部类。如果您的意图是编写可测试的测试驱动开发(TTDD),则您的设计可能需要另一种架构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接