我在考虑所有项目中的单元测试。我遇到了一个有趣的问题。我总是为每个类创建独立的测试类。测试类只测试一个类,所有外部函数都被模拟。我应该为每个要检查的类创建测试类吗? 我的意思是如果我在同一个包中有几个类,例如:
-org.mySample.dictionaries
--DictionaryConverter.java
--DictionaryDaService.java
DictionaryDaService将DictionaryConverter用于任何目的。这意味着我可以通过 DictionaryDaService 测试 DictionaryConverter 类。
我很确定这不是很好的练习,因为 DictionaryDaServiceTests 和 DictionaryConverter 原始类之间会有很多联系。换句话说,我打破了关于类之间关联的概念。我的测试通过同时取决于两个类。
但问题是,在公司项目中,我经常面临相同的单元测试。 在这种情况下,只是想获得一些观点和更多关于其他开发人员方法的expierence。
你会做什么?您是否为每个类创建了每个测试类?或者没有正确的概念如何编写测试?答案 0 :(得分:3)
测试有意义的东西。
如果DictionaryConverter
和DictionaryDaService
中的每一个都是独立的,并且每个都可以单独使用并且在不同的上下文中,则最好分别对每个单元进行单元测试。
另一方面,如果DictionaryDaService
仅由DictionaryService
使用,反之亦然,那么测试所有者对象就足够了。
答案 1 :(得分:1)
这类似于When to use stubs/mocks and when to use real objects in unit testing?
我的回答是第一个问题是写一个好的单元测试,一个反映意图(有意义的一个)的测试,如Yamenk所说。只要您的测试是快速,隔离,可重复,自我验证以及彻底和及时(F.I.R.S.T),您是否正在测试一种方法/一类是不重要的。
碰巧的是,如果你正在解密你的代码,那么你可以在同一个班级的一个单元中发现你的意图......