java - maven Surefire 插件 - 按顺序运行所有测试

标签 java maven unit-testing junit maven-surefire-plugin

出于某种原因,我无法让 Maven Surefire 插件按顺序运行我的测试。

我在测试中使用了 redis 模拟 ( https://github.com/kstyrc/embedded-redis ),它工作得很好,但我遇到了类似的错误

Cannot run program "/tmp/1494421531552-0/redis-server-2.8.19" (in directory "/tmp/1494421531552-0"): error=26, Text file busy

我查了一下,发现它可能与并行运行的测试有关,并且这个模拟存在问题。

当前我的 maven 看起来像这样

           <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.1</version>
            <configuration>
                <trimStackTrace>false</trimStackTrace>
                <useFile>false</useFile>
                <reuseForks>false</reuseForks>
                <forkCount>1</forkCount>
            </configuration>

我想确保所有我的测试按顺序运行(一个接一个) - 这意味着每个类的每个测试方法都单独运行。

我怎样才能实现这一目标?

最佳答案

据我所知,确保单元测试顺序的唯一方法是按字母顺序排列:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <runOrder>alphabetical</runOrder>
    </configuration>
</plugin>

话虽这么说,但我认为你需要在每个测试中定义一个 @After 方法来停止 redis 模拟(并实际上等到它停止),以便新测试可以在 @ 中启动 redis 模拟没有冲突的方法之前

关于java - maven Surefire 插件 - 按顺序运行所有测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53921015/

相关文章:

c# - 如何在单元测试中创建json post到mvc Controller

java - 在Spring MVC中设置拦截器

java - Repaint() 未调用 JComponent 类中的paintComponent()

java - 如何运行maven目标目录中JAR文件中的java类?

Java - 加载类路径之外的类。有什么选择

java - 如何在单元测试中在ApplicationRunner之前运行代码?

java - 为了测试而将方法包或私有(private)化是不好的做法吗?

java - 将数组传递给ActionListener,另一个数组触发事件

java - Gradle Eclipse 任务无法解析 MavenLocal 的依赖关系

java - "maven-resources-plugin prior to 2.4 is not supported by m2e"