Java 当从测试套件执行时,有没有办法强制Maven Surefire或JUnit指示失败测试类的名称?

Java 当从测试套件执行时,有没有办法强制Maven Surefire或JUnit指示失败测试类的名称?,java,maven,junit,surefire,test-suite,Java,Maven,Junit,Surefire,Test Suite,我的问题:当从测试套件中执行失败的测试类时,有没有办法强制Maven Surefire(或JUnit?)指示该类的名称 现在,说来话长 假设您有一个JUnit测试套件,它启动两个JUnit测试 测试类示例: public class TestOne { @Test public void foo() { assertTrue(false); } @Test public void bar() { assertTrue(f

我的问题:当从测试套件中执行失败的测试类时,有没有办法强制Maven Surefire(或JUnit?)指示该类的名称

现在,说来话长

假设您有一个JUnit测试套件,它启动两个JUnit测试

测试类示例:

public class TestOne {

    @Test
    public void foo() {
        assertTrue(false);
    }

    @Test
    public void bar() {
        assertTrue(false);
    }

}

@UnitTest
public class TestTwo {

    @Test
    public void foo() {
        assertFalse(true);
    }

}
以及测试套件:

@RunWith(Suite.class)
@SuiteClasses(value = { TestOne.class, TestTwo.class })
public class MySuite {

}
现在,如果我运行测试套件(
mvn test-Dtest=MySuite
),我将出现以下错误:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running caf.opm.preclosing.junit.MySuite
Tests run: 3, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec <<< FAILURE!

Results :

Failed tests:
  foo(my.project.junit.TestOne)
  bar(my.project.junit.TestOne)
  foo(my.project.junit.TestTwo)

Tests run: 3, Failures: 3, Errors: 0, Skipped: 0
如您所见,识别失败的测试变得越来越困难,例如,当
TestOne.foo()
TestTwo.foo()
失败时,我在JUnit报告中看到两个
MySuite.foo
错误。 当然,我可以通过读取失败测试的日志来检索测试类的名称,但这并不是一个真正的解决方案

所以我的问题是,我是否可以强制Surefire(或JUnit?)指示测试类的名称


谢谢。

我每个测试类都有一个文件,所以我花了一点时间才弄明白:您正在使用一个测试套件

使用测试套件时,所有测试结果最终都会包含在一个带有套件名称的文件中


没有更改此行为的选项。尝试。

您是否需要使用自定义的
测试套件
-您可以让Hudson/Maven简单地执行所有测试吗?测试阶段的默认行为将执行所有测试,并按预期报告测试结果。您使用哪个版本的surefire插件?根据我的经验,surefire reports文件夹中应该有补充文件……为什么要使用套件?为什么不让surefire做这项工作…@matt b和@khmarbaise如果你真的想了解我为什么需要运行一个
套件
,请在这里阅读整个故事:我刚刚尝试了surefire 2.8,但没有运气。。。
All Failed Tests
Test Name       Duration    Age   
>>> my.project.junit.MySuite.foo    0.0 1
>>> my.project.junit.MySuite.bar    0.0 1
>>> my.project.junit.MySuite.foo    0.0 1