Rom*_*las 5 java junit test-suite surefire maven
我的问题:当从Test Suite执行此类时,是否有办法强制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);
}
}
Run Code Online (Sandbox Code Playgroud)
和测试套件:
@RunWith(Suite.class)
@SuiteClasses(value = { TestOne.class, TestTwo.class })
public class MySuite {
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行测试套件(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
Run Code Online (Sandbox Code Playgroud)
因此,阅读这些内容,我可以轻松地检测哪些类和测试失败.
但是,在target/surefire-reports/目录中,我只有一个文件,MySuite.txt其中三个测试失败.这种情况的后果之一是我的Hudson版本将向我显示以下信息:
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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,它变得更难识别失败的测试,例如,作为TestOne.foo()和TestTwo.foo()失败,我看到了两个MySuite.foo在我的JUnit报告错误.当然,我可以通过读取失败测试的日志来检索测试类的名称,但它并不是真正的解决方案......
所以我的问题是要知道我是否可以强制Surefire(或JUnit?)来指示测试类的名称.
谢谢.
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |