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

时间:2010-11-16 07:51:36

标签: c# .net unit-testing

  

可能重复:
  testing an internal class

我喜欢将我的测试类放在一个单独的程序集中,这会导致测试内部类时出现一些问题。由于内部类和方法只在程序集内部可见,因此我的测试程序集无法看到这些类和方法。测试这些类的最有效方法是什么?我是否需要使用反射来访问我不想测试的方法?

4 个答案:

答案 0 :(得分:6)

您可以使用InternalsVisbleTo属性。

请参阅此问题:How do I allow assembly (unit testing one) to access internal properties of another assembly?

答案 1 :(得分:1)

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

虽然取决于,我倾向于做TDD,最终几乎没有使用内部。我不太喜欢在生产代码中添加属性以使其可测试的想法。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我想您可能会质疑您的内部课程在哪里使用以及用于何种目的。

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

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

但是,良好的开端可能会质疑是否真的有必要拥有内部课程。如果您打算编写TTDD(可测试测试驱动开发),您的设计可能需要另一种架构。