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
seleccionar el método que se probará y haga clic en Aceptar
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