发现难以将值添加到已在 junit 中声明为全局的列表

我发现很难将值添加到列表中。我做了很多研究,但似乎都没有。


请找到我的以下代码


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);

如何在不重构代码的情况下解决问题?我在哪里犯错?


呼如林
浏览 115回答 2
2回答

守候你守候我

这就是我解决这个问题的方法。public class TestCases(){@InjectMocksTest obj=new Test();@Testpublic void list(){MockitoAnnotations.initMocks(this);obj.list.add("something");}}

偶然的你

您可以使用反射将自定义列表实现设置为列表。就像是:&nbsp; &nbsp; ArrayList<Object> value = new ArrayList<>();&nbsp; &nbsp; value.add("something");&nbsp; &nbsp; Test obj = new Test();&nbsp; &nbsp; Field field = obj.getClass().getDeclaredField("name_of_field");&nbsp; &nbsp; // need for private field access&nbsp; &nbsp; field.setAccessible(true);&nbsp; &nbsp; field.set(obj, value);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java