Ihar Hancharenka 9b7ad5ddc6 m
2023-07-04 19:11:11 +03:00

59 строки
2.2 KiB
Plaintext

2022
Udemy - Learn integration testing with Spring Boot
https://www.udemy.com/course/learn-integration-testing-with-spring-boot/
magnet:?xt=urn:btih:1bf94df2619b72ca60de8e2223202b6d2576a510
! 363.5m
Advanced Spring - Effective Integration Testing with Spring Boot
magnet:?xt=urn:btih:afd24823c218c0cc876504cb86723cfc44b9ab29
! 201.5m, non-complete
https://www.linkedin.com/learning/spring-boot-test-driven-development
AopTestUtils
ReflectionTestUtils
MvcTestUtils, Mvc test client, MockMvc
Unit Test
@ExtendsWith(MockitoExtension.class)
Integration
@SpringBootTest(classes=MyConfig.class)
@AutoConfigureTestDatabase(replace=Replace.ANY)
@AutoConfigureMockMvc
@Autowired
MockMvc mockMvc;
someTestMethod() {
mockMvc.perform(get("/someEndpoint"))
.andExpect(status().isOk())
.andExpect(content().string(containsString("some-uuid")))
}
https://www.linkedin.com/learning/advanced-spring-effective-integration-testing-with-spring-boot
@SpringBootTest
@DataJpaTest (without web layer), @DataJdbcTest, ... @DataRedisTest
@WebMvcTest (loads web-layer only to the context without persistence layer), @RestClientTest, @WebServiceClientTest, @WebFluxTest
@MockBean ? for UT
BDDMockito lib
instead of when(methodCall).then(doSomething)
given(methodCall).will(doSomething)
TestEntityManager mgr
mgr.persistFlushFind(obj) -> to bypass hbm L1 cache
@ExtendsWith(MockitoExtension.class)
@InjectMock - uses constructor or setter injection
@Mock - replaces whole class entirely
@Spy - takes existing object and replaces only some methods
@MockBean and @SpyBean
@ExceptionHandler+@ResponseStatus()
or @ResponseStatus(HttpStatus.NOT_FOUND)
public void someMethod(SomeEx-n)
mockito given().willThrow(...)
@RestClientTest (MockRestServiceServer, only for RestTemplate)
WireMock is better
SpringCloudContract (generate tests by contract def-n),
StubRunner fetches generated jar and spins stub-server at config-d port
@SpringBootTest
@AutoConfigureStubRunner(ids="group:artifact:+:8080", stubsMode=StubRunnerProperties.StubsMode.LOCAL)