下記のコードにおいて、invokeの第1引数にgetClass()を指定しましたが、問題なくテスト成功しました。
invokeの第1引数はテスト対象(Main.java)のインスタンスを指定しないといけないと思ってましたが、何故getClass()でも大丈夫なのでしょうか?
getClass()ってMainTest.javaのインスタンスを呼んでいるんですよね?
java:Main.java
1package test; 2 3public class Main { 4 5 private Main() {}; 6 7 private static int sum(int n, int m) { 8 return n + m; 9 } 10 11}
java:MainTest.java
1package test; 2 3import static org.hamcrest.CoreMatchers.*; 4import static org.junit.Assert.*; 5 6import java.lang.reflect.Method; 7 8import org.junit.Test; 9 10public class MainTest { 11 12 @Test 13 public void sumTest() throws Exception { 14 int expected = 10; 15 16 Method method = Main.class.getDeclaredMethod("sum", int.class, int.class); 17 method.setAccessible(true); 18 19 int actual = (int)method.invoke(getClass(), 8, 2); 20 21 assertThat(expected, is(actual)); 22 } 23 24}
回答1件
あなたの回答
tips
プレビュー