我正在调用私有方法进行测试,为此我使用以下代码来调用私有方法。 repeat()是类Diamond的私有方法
import org.junit.Test;
import static org.junit.Assert.*;
import java.lang.StringBuilder;
import java.lang.reflect.Method;
public class DiamondUnit {
StringBuilder expect = new StringBuilder();
Diamond test = new Diamond();
Method m = test.getClass().getDeclaredMethod("repeat");
m.setAccessible(true);
m.invoke(test);
@Test
public void testRepeatNeg() {
assertEquals("", test.repeat(expect,"a",-1));
}
}
编译时会给出错误
DiamondUnit.java:11: error: expected
m.setAccessible(true);
^
DiamondUnit.java:11: error: illegal start of type
m.setAccessible(true);
^
DiamondUnit.java:12: error: expected
m.invoke(test);
^
DiamondUnit.java:12: error: expected
m.invoke(test);
^
我让警察粘贴了我正在收到的确切错误消息
答案 0 :(得分:1)
您不能在方法块之外使用语句。将代码放入适当的方法中。
import org.junit.Test;
import org.junt.SetUp;
import static org.junit.Assert.*;
import java.lang.StringBuilder;
import java.lang.reflect.Method;
public class DiamondUnit {
public void method() {
StringBuilder expect = new StringBuilder();
Diamond test = new Diamond();
Method m = test.getClass().getDeclaredMethod("repeat");
m.setAccessible(true);
m.invoke(test);
}
@Test
public void testRepeatNeg() {
assertEquals("", test.repeat(expect,"a",-1));
}
}