相关疑难解决方法(0)

在Maven构建中并行运行junit测试?

我正在使用JUnit 4.4和Maven,并且我有大量长时间运行的集成测试.

在并行化测试套件时,有一些解决方案允许我在一个测试类中并行运行每个测试方法.但所有这些都要求我以某种方式改变测试.

我真的认为在X线程中并行运行X个不同的测试类是一个更清晰的解决方案.我有数百个测试,所以我并不真正关心线程化个别测试类.

有没有办法做到这一点?

java junit maven

110
推荐指数
4
解决办法
7万
查看次数

默认情况下,Maven Surefire是否按顺序执行测试用例?

这是我在深入研究研究时意识到的这个问题的后续问题:

假设Maven Surefire插件默认顺序执行测试用例是否合理:测试用例在下一个测试用例开始之前结束(我对顺序不感兴趣).我发现你可以配置Surefire并行运行,这是否意味着顺序执行是默认行为,将来可能会发生?

注意:如果你问为什么我要强制测试顺序运行(我知道,好的测试应该能够并行运行),这是因为我正在解决一个特定问题的解决方案,涉及到Web应用程序.你可以在这里阅读它.

谢谢

java testing surefire maven

5
推荐指数
1
解决办法
2210
查看次数

为什么System.out.prinln乱序?

System.out.prinln不时想用来调试东西而不是使用调试器,或者我想要一个简单的程序写入标准输出,这样我就可以记录一些东西而不花时间来设置正确的日志.我注意到有时候我的文字会不按顺序打印出来.例如:

System.out.println("A");
System.out.println("B");    
System.out.println("C");
Run Code Online (Sandbox Code Playgroud)

可能导致

A
C
B
Run Code Online (Sandbox Code Playgroud)

正在印刷.

我很确定我不是疯了,所以我有两个问题:

  1. 为什么会这样?
  2. 什么是一种简单的方法,我可以防止这种情况发生?

编辑:更多信息:

我正在运行使用JUnit构建Lucene查询的单元测试.为了打印出来,我写了这堂课:

public class LogHelper { //TODO-DAVID remove
    public static final boolean ENABLED = true;
    public static final boolean DISABLED = false;

    private boolean enabled;

    public LogHelper(boolean enabled){
        this.enabled = enabled;
    }

    public synchronized void debug(String someString){
        if(enabled){
            System.out.println(someString);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试将'debug()'同步,以防多个线程调用它,但奇怪的打印偶尔也会发生故障.

java println system.out

2
推荐指数
1
解决办法
1714
查看次数

标签 统计

java ×3

maven ×2

junit ×1

println ×1

surefire ×1

system.out ×1

testing ×1