我有一个关于测试类(如转换器)的问题。可以说我有一个从EntityA到EntityB的转换器。转换器看起来像这样:
public EntityB convert(EntityA){
//call interal methods
return B.
}
private xy internalMethod1(...){
//call other interal Method
}
private xy internalMethod2(...){
....
}
private xy internalMethod3(...){
....
}
private xy internalMethod4(...){
....
}
转换器具有一个公共方法和4个内部方法来转换实体。
我应该如何测试?
Option1 我仅测试公共方法,并通过不同的示例输入涵盖了internalMethods中的所有情况。
优点:仅测试“接口”。不知道内部结构。内部重构非常容易,不需要在测试中进行任何更改。
缺点:测试所有案例的测试可能很大,可能不清楚。每个输入都必须通过所有方法。
Option2 我为公共方法和私有方法编写测试。(某些testframeworks可以访问诸如powermock或spock(groovy)之类的私有方法。)我单独测试每个方法并模拟其他每个内部方法。
优点:真正的小型测试,仅测试方法本身并模拟所有其他方法。
缺点:我知道它是如何内部实现的,如果我在内部调用结构上重构某些方法,某些方法名或某些内容,则必须更改测试
Option3 我编写了一些新的类,这些类负责内部工作并具有公共方法
优点:测试可能更清晰,并且仅针对特殊班级。
缺点:一项转换任务需要更多类。
请帮助我,这里的最佳做法是什么。也许一些良好的链接/提示。感谢您的时间。
米琪卡哇伊
相关分类