我最近一直在写很多单元测试。有一种情况我找不到干净的解决方案......
假设您有一种方法:
public void bigMethod() {
// a lot of code goes in here
}
为了让你的生活更轻松和代码更简洁,你通常会将这样的野兽分解为更小的内部方法:
public void bigMethod() {
a();
b();
c();
// etc.
}
您可以独立测试所有内部方法(a()、b()、c() 等)。问题是 bigMethod() 也应该进行测试,但它唯一要做的就是链接其他一些方法的调用,并且这些方法已经过彻底测试!
您如何处理这种情况?你不能不测试 bigMethod(),因为你需要确保 a()、b() 和 c() 是按正确的顺序调用的。但是为 bigMethod() 编写测试会导致大量重复测试。每次都减少这种重复会很麻烦,因为你会经常这样做。
我想到的一个想法是:
public void bigMethod() {
helperA.a();
helperB.b();
helperC.c();
// etc.
}
在这种情况下,您测试每个帮助程序类,然后确保 bigMethod() 按顺序调用它们。很好很干净,但是在项目中引入了很多非常小的类。
帮助测试忍者!