【发布时间】:2015-03-07 14:23:49
【问题描述】:
我正在尝试从一个类初始化一个私有字段,以便对其方法进行单元测试。为此,我正在使用反射,但我总是收到 IllegalArgumentException,而且我不明白我做错了什么。
我的代码如下所示:
public class MyClass {
private BufferedReader reader;
public void methodToTest(){
doSomethingwith(reader);
}
}
public class testClass {
@Test
public void testMethod() {
Field reader = MyClass.class.getDeclaredField("reader");
reader.setAccessible(true);
StringReader stringReader = new StringReader("some string");
BufferedReader readerToSet = new BufferedReader(stringReader);
reader.set(readerToSet, readerToSet);
MyClass instance = new MyClass();
instance.methodToTest();
}
}
我在尝试运行测试时收到此错误:
Can not set java.io.BufferedReader field MyClass.receiveReader to java.io.BufferedReader
我还尝试从类中获取字段的值并设置给读者。但是该值返回 null,我仍然收到相同的错误消息。
知道如何初始化字段以便测试方法吗?
【问题讨论】:
标签: java unit-testing reflection field