vendredi 9 janvier 2015

Access a private field for a junit test

I am trying to initialize a private field from a class in order to unit test its methods. For that I am using reflection but I am always getting an IllegalArgumentException and I don't understand what I am doing wrong.


My code looks something like this:



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(receiveReaderToSet, receiveReaderToSet);
MyClass instance = new MyClass();
instance.methodToTest();
}
}


I get this error when I am trying to run the test:



Can not set java.io.BufferedReader field MyClass.receiveReader to java.io.BufferedReader


I also tried getting the value of the field from the class and setting to the reader. But the value returns null and I still get the same error message.


Any idea how I could initialize the field so I can test the method?






Aucun commentaire:

Enregistrer un commentaire