最近、たくさんの単体テストを書いています。きれいな解決策が見つからないシナリオがあります...
あなたがメソッドの獣を持っているとしましょう:
public void bigMethod() {
// a lot of code goes in here
}
あなたの生活を楽にし、コードをよりクリーンにするために、あなたは通常、そのような獣をより小さな内部メソッドに分解します:
public void bigMethod() {
a();
b();
c();
// etc.
}
すべての内部メソッド(a()、b()、c()など)を個別にテストできます。問題はbigMethod()であり、これもテストする必要がありますが、実行しているのは他のメソッドの呼び出しを連鎖させることだけであり、それらはすでに徹底的にテストされています。
そのようなシナリオにどのようにアプローチしますか?a()、b()、およびc()が適切な順序で呼び出されていることを確認する必要があるため、bigMethod()をテストしないままにすることはできません。ただし、bigMethod()のテストを作成すると、テストで多くの重複が発生します。そして、あなたがそれを頻繁に行うので、毎回そこでこの重複を減らすことは多くの面倒です。
私の頭に浮かぶアイデアの1つは次のとおりです。
public void bigMethod() {
helperA.a();
helperB.b();
helperC.c();
// etc.
}
このシナリオでは、すべてのヘルパークラスをテストしてから、bigMethod()がそれらをinOrderで呼び出すことを確認します。素晴らしくてきれいですが、プロジェクトに非常に小さなクラスがたくさん導入されています。
忍者のテストを手伝ってください!