前提・実現したいこと
JUintでUTを実施するためのテストケースを作成しています。
以下のような内容のソースコードで、test.method()を3回連続実行してすべて異なる値を返すようにモック化したいのですが、良い方法はあるでしょうか。
環境の都合上、Mockitoやwhenは使用できません。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
testSource.java public class TestSource { private TestClass test: public void source01(int a,int b,int c) { String d = test.method(a); String e = test.method(b); String f = test.method(c); (以下省略) } }
試したこと
以前、以下のような方法を試しました。
public class testMock{
@Test()
public void test1(){
TestSource testSource = new MockUp<>(TestSource ){
}.getMockInstance();
TestClass testClass1 = new MockUp<>(TestClass){
@Mock
String method(String a)
{
return "AAA";
}
}.getMockInstance();
TestClass testClass2 = new MockUp<>(TestClass){
@Mock
String method(String a)
{
return "SSS";
}
}.getMockInstance();
TestClass testClass3 = new MockUp<>(TestClass){
@Mock
String method(String a)
{
return "DDD";
}
}.getMockInstance();
Method m = TestSource.class.getDeclaredMethod("source01",String.class,String.class,String.class);
m.setAccessible(true);
Field f1 = TestSource.class.getDeclaredField("method");
f1.setAccessible(true);
f1.set(testSource , testClass1);
Field f2 = TestSource.class.getDeclaredField("method");
f2.setAccessible(true);
f2.set(testSource , testClass2);
Field f3 = TestSource.class.getDeclaredField("method");
f3.setAccessible(true);
f3.set(testSource , testClass3);
m.invoke(testSource ,引数は省略);
}
実行した結果、test.method()の戻り値がすべて、最後に設定したtestClass3の値になっていました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。