理论场景:
让我们说您有一个带有许多接口的Core-Modul,以及使用这些接口的一些通用实现,但它们不从这些接口继承,也没有从这些接口继承的多个模块继承。
类似的事情:
核心模块
| -接口A
| -InterfaceB
| -...
| -InterfaceZ
| -impl
| -GenericImplementationA
| -GenericImplementationB
ModuleA
| -SpecificImplementationOfInterfaceA
| -SpecificImplementationOfInterfaceB
| -...
| -SpecificImplementationOfInterfaceZ
...
ModuleZ
| -OtherSpecificImplementationOfInterfaceA
| -OtherSpecificImplementationOfInterfaceB
| -...
| -OtherSpecificImplementationOfInterfaceZ
我的问题是,编写“通用”测试的最佳方法是什么,这些测试使用这些接口,但对于具有特定实现的每个模块都将执行。此外,我想为核心模块中的那些通用类编写测试,但是我没有这些类中使用的接口的实现。
我想到的一些可能的解决方案是:
解决方案A的缺点是您需要太多冗余类,这些冗余类仅从通用测试继承并通过特定的特定实现。
在这种情况下,是否有任何好的做法示例?
答案 0 :(得分:2)
单元测试的主要目的是
从那里来:当然,人们不应该对单元测试代码的质量感到粗心,但是单元测试很重要,可以针对相应的生产类别进行定制/严格。
换句话说:当A具有某些功能X时,则ATest应该测试该X。当您具有某些B extends A
时,则要对B具有“在A之上”的所有事物进行单元测试。
从这个角度来看,您宁愿将目光投向第二个选项。您会看到,当对您的一个特殊模块的测试失败时,您希望尽快解决该问题。您不不想先跳到某个基础测试类,以读取与子类中的失败无关的100行代码。
换句话说:一个测试类应该尽可能地独立,您对使用继承来避免代码重复非常谨慎...