我喜欢将我的测试类放在一个单独的程序集中,这会导致测试内部类时出现一些问题。由于内部类和方法只在程序集内部可见,因此我的测试程序集无法看到这些类和方法。测试这些类的最有效方法是什么?我是否需要使用反射来访问我不想测试的方法?
答案 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(可测试测试驱动开发),您的设计可能需要另一种架构。