У меня есть вопрос об использовании Mockito в Java.Я прикреплю 2 блока аналогичного кода: первый, который отлично работает
package controller;
import model.DatabaseModel;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;
public class TestController {
JSONObject jsonObj1;
JSONArray testArr;
@Mock
private DatabaseModel testDB;
@InjectMocks
private Controller controller;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
jsonObj1 = new JSONObject();
jsonObj1.put("name", "Bar");
testArr = new JSONArray();
testArr.put(jsonObj1);
when(testDB.getActivites()).thenReturn(testArr);
}
@Test
public void testServerCon() {
ArrayList<String> testServer = new ArrayList<>();
testServer.add("Bar");
assertEquals(testServer, controller.getAllActivites());
}
}
и второй, который действительно не работает:
package controller;
import model.DatabaseModel;
import org.json.JSONArray;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.*;
public class TestController2 {
JSONObject jsonObj1;
JSONArray testArr;
DatabaseModel testDB;
Controller controller;
@Before
public void setup() {
jsonObj1=new JSONObject();
jsonObj1.put("name", "Bar");
testArr=new JSONArray();
testArr.put(jsonObj1);
controller=new Controller();
testDB=mock(DatabaseModel.class);
when(testDB.getActivites()).thenReturn(testArr);
verify(testDB).getActivites();
}
@Test
public void testServerCon(){
ArrayList<String> testServer=new ArrayList<>();
testServer.add("Bar");
assertEquals(testServer, controller.getAllActivites());
}
}
Когда я использовалметод проверки для второго, я получаю ошибку, что метод никогда не вызывался на макете, так что мне интересно, что я пропустил?Я просмотрел учебники в Интернете, некоторые используют аннотации, а некоторые используют вызовы методов, но если я не ошибаюсь, они должны быть одинаковыми, так что мне здесь не хватает?