调用私有方法时所需的标识符

时间:2013-04-19 05:33:44

标签: java

我正在调用私有方法进行测试,为此我使用以下代码来调用私有方法。 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);
^

我让警察粘贴了我正在收到的确切错误消息

1 个答案:

答案 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));
        }
}
相关问题