Hello there,
I’m experimenting false positives regarding no assertion in test cases.
- I’m using IntelliJ 2020.1 build IU-221.6668.121 and SonarLint 4.6.0.16682 right now but this is happening for older versions too.
- Context: Spring Framework 5.2.5 project using spring-test and
org.springframework.test.web.servlet.ResultActions.andExpect()
- End2end tests extends a base class which got custom methods to test common scenarios: successfull requests, invalid, 404, etc.
- A minimal example:
public abstract class ControllerTest extends ServiceTest {
protected MvcResult performSuccessfulRequest(MockHttpServletRequestBuilder requestBuilder) throws Exception {
return performRequest(requestBuilder, null, null, status().isOk());
}
protected MvcResult performRequest(MockHttpServletRequestBuilder requestBuilder, String content,
RequestPostProcessor withUser, ResultMatcher statusMatcher, ResultMatcher... resultMatchers) throws Exception {
requestBuilder.contentType(MediaType.APPLICATION_JSON);
if (content != null) {
requestBuilder.content(content);
}
if (withUser != null) {
requestBuilder.with(withUser);
}
ResultActions resultActions = mockMvc.perform(requestBuilder);
for (ResultMatcher resultMatcher : resultMatchers) {
resultActions.andExpect(resultMatcher);
}
return resultActions.andExpect(statusMatcher)
.andDo(print())
.andReturn();
}
}
@RunWith(SpringRunner.class)
public class HeadquarterControllerTest extends ControllerTest {
@Test
public void createHeadquarter_onlyName() throws Exception {
performSuccessfulRequest(MockMvcRequestBuilders.post("/headquarters"));
}
}
As you can see there’s andExpect
inside performRequest.
Don’t know if there’s a way to avoid these false positives.
Regards.