¿Cómo probar microservicios individuales (Dubbo, Spring Cloud)?

Prefacio

Hay muchos marcos de prueba, Junit, EasyMock, PowerMock, TestNG, DBUnit, etc.

Se recomienda escribir una única prueba para procesos comerciales importantes, utilizando Junit, el marco de pruebas EasyMock

Si la clase empresarial es A, el método de denominación de la clase de prueba única es ATest, la estructura del paquete de la clase ATest y la clase A son iguales y el nombre del método de prueba es el mismo

IDEA genera rápidamente una clase de prueba

Presione la tecla de método abreviado
Win: Ctrl + Shift + T
Mac: ⇧ + comando + T para
Inserte la descripción de la imagen aquí
seleccionar el método que se probará y haga clic en Aceptar
Inserte la descripción de la imagen aquí

Junit

No imprima simplemente el resultado y escriba la afirmación esperada al final, como

assertTrue(flag);
assertEquals(username, "test");

EasyMock

En las aplicaciones de microservicio, a veces es necesario llamar a los servicios de otras personas ¿Cómo realizar una prueba única cuando las interfaces de otras personas no están bien desarrolladas? En este momento, debe burlarse del valor de retorno de los servicios de otras personas.

Si hay un ManageService que depende del UserService de otro servicio

@Service
public class ManageService {
    
    

    @Autowired
    private UserService userService;

    public String getUsername() {
    
    
        return userService.getUsername();
    }
    
    public boolean saveUserInfo(UserInfo userInfo) {
    
    
        return userService.saveUserInfo(userInfo);
    }
}
public interface UserService {
    
    

    String getUsername();

    boolean saveUserInfo(UserInfo userInfo);
}
@Data
public class UserInfo {
    
    

    private String name;
    private Integer age;
}

Puede escribir una sola prueba de la siguiente manera

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = AppConfig.class)
public class ManageServiceTest {
    
    

    @Autowired
    private ManageService manageService;

    private UserService userService;

    @Test
    public void getUsername() throws Exception {
    
    

        userService = EasyMock.createMock(UserService.class);
        EasyMock.expect(userService.getUsername()).andReturn("test");
        Field userServiceField = manageService.getClass().getDeclaredField("userService");
        userServiceField.setAccessible(true);
        userServiceField.set(manageService, userService);
        EasyMock.replay(userService);
        String username = manageService.getUsername();
        System.out.println(username);
        assertEquals(username, "test");
    }

    @Test
    public void saveUserInfo() throws Exception {
    
    

        userService = EasyMock.createMock(UserService.class);
        EasyMock.expect(userService.saveUserInfo(EasyMock.anyObject())).andReturn(true);
        Field userServiceField = manageService.getClass().getDeclaredField("userService");
        userServiceField.setAccessible(true);
        userServiceField.set(manageService, userService);
        EasyMock.replay(userService);
        boolean flag = manageService.saveUserInfo(EasyMock.anyObject());
        System.out.println(flag);
        assertTrue(flag);
    }
	
}

Puede construir diferentes tipos de parámetros de entrada, como se muestra a continuación, hay muchas formas de no introducir

 EasyMock.anyBoolean();
 EasyMock.anyString();
 EasyMock.anyObject();

Blog de referencia

[1] http://thoreauz.com/2017/07/20/devops/test/JAVA common test framework /
[2] https://blog.csdn.net/a672489861/article/details/10065133
web de prueba
[3 ] https://juejin.im/post/5b694ff7e51d4519475f7fbc
test json
[4] https://www.baeldung.com/jsonassert
Junit assertion
[5] http://wiki.jikexueyuan.com/project/junit/using-assertion .html
[6] https://www.cnblogs.com/shugen/p/6863027.html
maven genera un informe de prueba + qué clases se probarán
[7] https://blog.csdn.net/fireofjava/article/ detalles / 28630449
好 文
[8] https://www.cnblogs.com/mistor/p/5225380.html

Supongo que te gusta

Origin blog.csdn.net/zzti_erlie/article/details/106720391
Recomendado
Clasificación