Alejandro Vidal Rodriguez
Director of Engineering @TribalScale
Why we should test
Testing piramid
Slices
Mocking
Unit Testing
Integration testing
End to end testing
Coverage
How to pass your tests
https://martinfowler.com/articles/practical-test-pyramid.htmlUnit test
@RunWith(MockitoJUnitRunner.class)
public class B2BClientBayPlanTest {
@Mock
MessageUtil messageUtil;
@Mock
SecurityUtility securityUtility;
@Mock
CustomUserDetails customUserDetails;
@Test
public void createHeader() {
Mockito.when(securityUtility.getUserInfo()).thenReturn(customUserDetails);
Mockito.when(customUserDetails.getUsername()).thenReturn("Alex");
B2BClientBayPlan b2BClientBayPlan = new B2BClientBayPlan(messageUtil, securityUtility);
B2bHeader b2bHeader = b2BClientBayPlan.createHeader("myAction");
assertEquals("myAction", b2bHeader.getMessageHeader().getAction());
}
@Test
public void sendToB2B() {
}
}@RunWith(SpringRunner.class)
@WebMvcTest(controllers = VoyageEnquiryController.class)
@TestPropertySource(properties = "eureka.client.enabled=false")
public class VoyageEnquiryTest {
@Autowired
private MockMvc mockMvc;
@MockBean
VoyageEnquiryService voyageEnquiryService;
@MockBean
ClientRegNewService clientRegNewService;
@Test
@WithMockUser
public void searchVoyageEnquiry() throws Exception {
List<VoyageEnquirySearchResultSO> resultList = new LinkedList<>();
Mockito.when(voyageEnquiryService.searchVoyageEnquiry(any(VoyageEnquirySearchSO.class))).thenReturn(resultList);
MvcResult result = this.mockMvc
.perform(post("/searchVoyageEnquiry")
.content(VOYAGE_SEARCH)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(VOYAGE_SEARCH_ID))
.andExpect(status().isOk())
.andReturn();
assertEquals("{\"list\":[]}", result.getResponse().getContentAsString());
Mockito.verify(voyageEnquiryService, Mockito.atLeastOnce()).searchVoyageEnquiry(any(VoyageEnquirySearchSO.class));
}@RunWith(MockitoJUnitRunner.class)
public class B2BClientBayPlanTest {
@Mock
MessageUtil messageUtil;
@Mock
SecurityUtility securityUtility;
@Mock
CustomUserDetails customUserDetails;
@Test
public void createHeader() {
Mockito.when(securityUtility.getUserInfo()).thenReturn(customUserDetails);
Mockito.when(customUserDetails.getUsername()).thenReturn("Alex");
B2BClientBayPlan b2BClientBayPlan = new B2BClientBayPlan(messageUtil, securityUtility);
B2bHeader b2bHeader = b2BClientBayPlan.createHeader("myAction");
assertEquals("myAction", b2bHeader.getMessageHeader().getAction());
}
@Test
public void sendToB2B() {
}
}@RunWith(SpringRunner.class)
@WebMvcTest(controllers = VoyageEnquiryController.class)
@TestPropertySource(properties = "eureka.client.enabled=false")
public class VoyageEnquiryTest {
@Autowired
private MockMvc mockMvc;
@MockBean
VoyageEnquiryService voyageEnquiryService;
@MockBean
ClientRegNewService clientRegNewService;
@Test
@WithMockUser
public void searchVoyageEnquiry() throws Exception {
List<VoyageEnquirySearchResultSO> resultList = new LinkedList<>();
Mockito.when(voyageEnquiryService.searchVoyageEnquiry(any(VoyageEnquirySearchSO.class))).thenReturn(resultList);
MvcResult result = this.mockMvc
.perform(post("/searchVoyageEnquiry")
.content(VOYAGE_SEARCH)
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(VOYAGE_SEARCH_ID))
.andExpect(status().isOk())
.andReturn();
assertEquals("{\"list\":[]}", result.getResponse().getContentAsString());
Mockito.verify(voyageEnquiryService, Mockito.atLeastOnce()).searchVoyageEnquiry(any(VoyageEnquirySearchSO.class));
}contact
https://www.linkedin.com/in/alejandrovidalrodriguez
https://medium.com/@goofyahead​
https://github.com/goofyahead