затрудняется добавить значения в список, который был объявлен глобальным в junit - PullRequest
0 голосов
/ 06 марта 2019

Я затрудняюсь добавить значения в список.Я провел много исследований, но ни один из них не работает.

Пожалуйста, найдите мои коды ниже

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}
}

, когда я вызываю method2 напрямую через junit, список пуст.Как я могу добавить значения в список в Junit?это где именно трудно добавить значения.

я пробовал ниже Approcah, но это не работает. выдает исключение нулевого указателя

List<Test> obj=new ArrayList<Test>();

Test cObject=Mockito.mock(Test.class); 
cObject.list.add("something"); //getting error in this line
obj.add(cObject);

как я могу решить проблему без рефакторинга моего кода?где я делаю ошибки?

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Вот как я решил эту проблему.

public class TestCases(){

@InjectMocks
Test obj=new Test();

@Test
public void list(){
MockitoAnnotations.initMocks(this);
obj.list.add("something");}
}
0 голосов
/ 06 марта 2019

Вы можете использовать отражение для настройки реализации пользовательского списка в список. Что-то вроде:

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