Heim  >  Artikel  >  Java  >  So verwenden Sie Mockito für Java-Unit-Tests

So verwenden Sie Mockito für Java-Unit-Tests

王林
王林nach vorne
2023-04-19 23:22:091684Durchsuche

Einführung in Mockito

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.

Service-Testfall

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

Controller-Testfall

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen