我喜欢在一个单独的程序我的测试类,而且会引起一些问题,测试内部类。由于内部类和方法仅在程序集内部可见,因此我的测试程序集无法看到这些类和方法。什么是测试这些类最有效的方法?我是否需要使用反射来访问我不想测试的方法?
3
A
回答
6
您可以使用InternalsVisbleTo属性。
看到这个问题:How do I allow assembly (unit testing one) to access internal properties of another assembly?
+1
当然,你可以做到这一点,但我感觉很奇怪。 – 2010-11-16 08:23:07
1
我的最佳选择是仅测试他们间接地通过使用它们,就像私人的类和方法的公共类和方法。
虽然取决于我,但我倾向于做TDD,并且很少使用内部结构。我不太喜欢在生产代码中添加属性的想法,只是为了使其可测试。
1
您可以使用公共方法将功能重构为新类,然后测试该方法。
0
我想你可能会怀疑你的内部类在哪里以及为了什么目的。
如果它在那里,它必须有自己的使命。这个任务可能会影响某些事情;例如另一个对象的状态。
因此,通过测试'另一个'对象,你可能有机会间接测试你的内部类。
但是好的开始可能会质疑是否真的有必要拥有这个内部类。如果你的意图是编写一个TTDD(可测试的测试驱动开发),你的设计可能需要另一个架构。
相关问题
- 1. 如何测试内部方法
- 2. 如何测试方法的类内
- 3. TestNG:应该按方法或类的测试运行测试,调用@BeforeSuite方法?
- 4. 使用NUnit测试私有方法和内部类?
- 5. 测试内部类
- 6. 如何测试该方法应该引发不同类型的异常?
- 7. 如何测试内部类库?
- 8. 我应该如何测试一个方面的方法?
- 9. 该方法调用内部if-checks“测试”,然后“恢复”?
- 10. 应该如何测试caches_page?
- 11. 测试API时 - 我应该测试API方法验证吗?
- 12. 我应该在哪里测试抽象类的方法?
- 13. 我应该如何测试Java中的私有方法?
- 14. 我应该如何测试BDD中值对象类型的“isEqual”方法?
- 15. 在内部静态类中测试void方法的单元
- 16. 我该如何测试使用boto3和moto的方法
- 17. 如何测试抽象类的方法?
- 18. 每种方法应该运行多少种测试方法?
- 19. 我应该如何在方法中测试空和/或空字符串参数?
- 20. 如何忽略JUnit测试方法本身内的测试
- 21. Easymock测试方法内部的多个方法调用
- 22. 如何测试方法(白盒测试)
- 23. 如何测试在被测试的类中调用的方法?
- 24. 如何在测试设置方法中获取测试类别
- 25. 集成测试私有类和方法
- 26. 组测试类名和方法名
- 27. 如何测试named_scopes和搜索方法?
- 28. 单元测试和对象的范围 - 如何测试私人/内部方法等?
- 29. 我应该测试公共类功能,只改变对象的内部状态?
- 30. OCMock的测试类方法
这已被问到之前:http://stackoverflow.com/questions/606137/testing-an-internal-class – 2010-11-16 07:53:11
确实,它也有答案。测试你的顶级API,而不是你的内部类。如果你必须的话,你可以使用InternalsVisibleTo。 – Peter 2010-11-16 07:55:50
对不起......有可能将问题标记为重复? – 2010-11-16 08:22:24