クラスに 3 つのメソッドがあるとします。
public void parent() throws Exception {}
public String child_1(String arg_1) throws IOException {}
public boolean child_2(String arg_1, String arg_2) throws SQLException {}
parent()
child_1()
と をchild_2()
次のように呼び出します。
public void parent() throws Exception {
// Do some complicated stuff
child_1("str1");
// More stuff
child_2("str1", "str2");
// More stuff
}
child_1() と child_2() を既にテスト済みで、parent() のみをテストしたい場合、child_1() と child_2() をオーバーライドして、parent() のみをテストしても問題ありませんか? このようなもの:
MyClass myClass = new MyClass() {
@Override
public String child_1(String arg_1) throws IOException {
return "expected_string_to continue_execution";
}
@Override
public boolean child_2(String arg_1, String arg_2) throws SQLException {
return true; // return expected boolean result to continueexecution;
}
};
myClass.parent();
これを行うことで、parent() を簡単にテストできます。child_1() と child_2() は、このクラスの他の単体テストで既にテストされているため、不正行為は行われません (少なくとも私はそう考えています。間違っています)。また、実際に chaild_1() と child_2() が複雑なことを行っている場合、このアプローチによりテストが容易になり、時間のかかるコードを重複してチェックする必要がなくなります。
私の質問は、それが正しいアプローチであるかどうかです。そうでない場合、何がマイナス面であり、最も重要なこととして、正しいアプローチは何ですか? 誰かが上記と同じ例で説明できれば、それは素晴らしいことです。
どうもありがとう。