2010-11-16 86 views
3

可能重复:
testing an internal class内部类和方法应该如何测试?

我喜欢在一个单独的程序我的测试类,而且会引起一些问题,测试内部类。由于内部类和方法仅在程序集内部可见,因此我的测试程序集无法看到这些类和方法。什么是测试这些类最有效的方法?我是否需要使用反射来访问我不想测试的方法?

+1

这已被问到之前:http://stackoverflow.com/questions/606137/testing-an-internal-class – 2010-11-16 07:53:11

+1

确实,它也有答案。测试你的顶级API,而不是你的内部类。如果你必须的话,你可以使用InternalsVisibleTo。 – Peter 2010-11-16 07:55:50

+0

对不起......有可能将问题标记为重复? – 2010-11-16 08:22:24

回答

1

我的最佳选择是仅测试他们间接地通过使用它们,就像私人的类和方法的公共类和方法。

虽然取决于我,但我倾向于做TDD,并且很少使用内部结构。我不太喜欢在生产代码中添加属性的想法,只是为了使其可测试。

1

您可以使用公共方法将功能重构为新类,然后测试该方法。

0

我想你可能会怀疑你的内部类在哪里以及为了什么目的。

如果它在那里,它必须有自己的使命。这个任务可能会影响某些事情;例如另一个对象的状态。

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

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

相关问题