テストされたクラスを拡張せずに、メソッドを(リフレクションを使用して)スーパークラスに注入するにはどうすればよいですか? getExternalData()
内部のロジックをテストするために交換する必要がありsomeMethod()
ます。テストしたクラスを変更することはできません。そのため、メソッドの注入を考えていました。
私は流れるクラスを持っています:
public class B extends A{
public String someMethod(){
String someString = super.getExternalData();
//logic to be tested - manipulating on someString
return someString;
}
}
public class A{
public String getExternalData(){
//some Logic that generates "externalData" string
return externalData;
}
}
そしてテスト:
public class CesTest{
@Test
public void someMethodTest()(
B instance = new B();
//...
//...
assertEquals("expectedData", instance.someMethod());
}
}