如何使用Spring Boot运行多个测试

nom*_*dus 4 spring-boot

使用Spring Boot 1.5,我怎么能运行不同类的多个测试?

例如

I have `Service1` tests in `Service1test.java`;

I have `Service2` tests in `Service2test.java`;
Run Code Online (Sandbox Code Playgroud)

我需要一气呵成.

nom*_*dus 10

我所做的如下:在主要班级

@RunWith(Suite.class)
@Suite.SuiteClasses({
        PostServiceTest.class,
        UserServiceTest.class
})
public class DataApplicationTests {
    @Test
    public void contextLoads() {
    }
}
Run Code Online (Sandbox Code Playgroud)

在PostServiceTest我有

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
public class PostServiceTest  {
    @Autowired
    IPostService postService;

    @Before
    public void initiate() {
        System.out.println("Initiating the before steps");
    }

    @Test
    public void testFindPosts() {
        List<Post> posts= postService.findPosts();
        Assert.assertNotNull("failure - expected Not Null", posts);       
    }
}
Run Code Online (Sandbox Code Playgroud)

第二类UserServiceTest具有类似的结构.

当我运行DataApplicationTests时,它会运行这两个类.


Zar*_*lis 6

我假设您使用的是 IntelliJ,但相同的内容适用于所有 IDE。

Gradle 和 Maven 具有标准化的项目结构,这意味着位于“test-root”内的所有测试类都将在 mvn test(仅测试)或构建时运行(以检查代码行为是否正确)。在这种情况下,如果测试失败,构建也会失败)。

这是 IntelliJ 上标记为绿色的测试目录的图像:在此输入图像描述

您的 IDE 应允许您单独运行特定的测试、测试套件或类,而无需键入任何命令。IntelliJ 在分隔列上(靠近行号)提供了一些图标,使您能够运行特定的东西。查看这些绿色播放按钮:在此输入图像描述

但创建测试套件时要小心。这样,除非您手动配置需要运行的测试,否则您将获得重复运行,因为构建工具将独立运行所有测试套件,然后运行所有测试!(这意味着,如果测试套件 A 包含测试套件 B 和 C,则 B 和 C 将运行 2 次:A 各运行 1 次,独立运行 1 次。这同样适用于独立测试类)。