如何使用spring集成测试按顺序运行控制器测试类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用spring集成测试按顺序运行控制器测试类相关的知识,希望对你有一定的参考价值。

按顺序运行控制器测试类。

我在下面有这个测试类。

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
public class UserControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void findAll() throws Exception {
        MvcResult result = mockMvc
                .perform(get("/api/user").contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk()).andReturn();

        MockHttpServletResponse response = result.getResponse();
        RestResponse restResponse = mapper.readValue(response.getContentAsString(), RestResponse.class);
        Assert.assertEquals(restResponse.getHttpStatus().name(), HttpStatus.OK.name() );
    }
}

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
public class ProductControllerTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    public void findAll() throws Exception {
        MvcResult result = mockMvc
                .perform(get("/api/product").contentType(MediaType.APPLICATION_JSON))
                .andExpect(status().isOk()).andReturn();

        MockHttpServletResponse response = result.getResponse();
        RestResponse restResponse = mapper.readValue(response.getContentAsString(), RestResponse.class);
        Assert.assertEquals(restResponse.getHttpStatus().name(), HttpStatus.OK.name() );
    }

}

我想按顺序运行这个控制器测试类。例如,第一个UserControllerTest在ProductControllerTest之后运行。

我怎样才能做到这一点?

谢谢。

答案

如果你有Junit 5作为依赖,你可以通过使用@TestMethodOrder控制方法顺序的完全控制,但在测试类本身内。

关于测试类本身的顺序,没有太多控制可用。关于<runOrder>配置的Maven Failsafe文档说:

支持的值是“按字母顺序”,“反向字母”,“随机”,“每小时”(偶数小时按字母顺序排列,奇数小时反向按字母顺序排列),“先失败”,“平衡”和“文件系统”。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>3.0.0-M3</version>
    <configuration>
      <runOrder>alphabetical</runOrder>
    </configuration>
    <executions>
      <execution>
        <goals>
          <goal>integration-test</goal>         
        </goals>
      </execution>
    </executions>
  </plugin>

以上是关于如何使用spring集成测试按顺序运行控制器测试类的主要内容,如果未能解决你的问题,请参考以下文章

如何在ScalaTest中按顺序运行类中的测试?

如何让 Jest 按特定顺序运行测试?

如何在 Junit5 / spring boot 中命令执行控制器测试类?

如何按特定顺序运行 Maven 测试? [复制]

添加多个服务时,Spring Boot 集成测试失败

如何让 Spring 使用多个上下文自动装配集成测试类?