请找到我下面的代码
public class Test(){
List <String> list=new ArrayList<>(String); // global
public Object method1(){
// here am adding the values to list
}
String method2(){
if(list.Contains("somethig"))
//true}
}
当我直接通过junit调用method2时,列表为空。如何在junit中添加值到列表?这是很难添加值的地方。
我尝试了以下方法,但无法正常工作。 它会引发空指针异常
List<Test> obj=new ArrayList<Test>();
Test cObject=Mockito.mock(Test.class);
cObject.list.add("something"); //getting error in this line
obj.add(cObject);
如何在不重构代码的情况下解决问题?我在哪里犯错?
答案 0 :(得分:0)
您可以使用反射将自定义列表实现设置为列表。像这样:
ArrayList<Object> value = new ArrayList<>();
value.add("something");
Test obj = new Test();
Field field = obj.getClass().getDeclaredField("name_of_field");
// need for private field access
field.setAccessible(true);
field.set(obj, value);
答案 1 :(得分:0)
这就是我解决此问题的方式。
public class TestCases(){
@InjectMocks
Test obj=new Test();
@Test
public void list(){
MockitoAnnotations.initMocks(this);
obj.list.add("something");}
}