Beim Aufrufen der Methode des Scheinobjekts wird nicht die eigentliche Methode ausgeführt, sondern der Standardwert des Rückgabetyps, z. B. object gibt null zurück, int gibt 0 zurück usw., andernfalls wird angegeben, wann (method).thenReturn(value), um den Rückgabewert der Methode anzugeben. Gleichzeitig kann das Scheinobjekt verfolgt werden und mithilfe der Verifizierungsmethode festgestellt werden, ob es aufgerufen wurde. Das Spionageobjekt führt standardmäßig die eigentliche Methode aus und der Rückgabewert kann durch when.thenReturn überschrieben werden. Es ist ersichtlich, dass Mock für andere Tests praktisch ist, solange es die Ausführung einiger Methoden vermeidet und den angegebenen Wert direkt zurückgibt.
Erforderliche Abhängigkeiten
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-test</artifactId> <version>2.1.13.RELEASE</version> </dependency>
Codebeispiel
@RunWith(MockitoJUnitRunner.class) @SpringBootTest() public class StudentServiceTest { @InjectMocks StudentService studentService = new StudentServiceImpl(); @Mock StudentDAO studentDAO; @Before public void before(){ Mockito.doReturn(new StudentDO("张三", 18)).when(studentDAO).read(Mockito.anyString()); } @Test public void testRead(){ StudentDO read = studentService.read(""); Assert.assertNotNull(read); } }
Erforderliche Abhängigkeiten
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.14.RELEASE</version> </dependency> <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.4.0</version> </dependency>
Codebeispiel
@RunWith(MockitoJUnitRunner.class) @SpringBootTest() public class StudentControllerTest { @Resource MockMvc mockMvc; @InjectMocks StudentController studentController; @Mock StudentService studentService; @Before public void before() { mockMvc = MockMvcBuilders.standaloneSetup(studentController).build(); Mockito.doReturn(new StudentDO("张三", 18)).when(studentService).read(Mockito.anyString()); } @Test public void testRead() throws Exception { MockHttpServletRequestBuilder request = MockMvcRequestBuilders.get("/student/read/1"); mockMvc.perform(request) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$.name").value("张三")); } }
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Mockito für Java-Unit-Tests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!