gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:21 24 4
gpt4 key购买 nike

我的问题:有没有办法强制 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

因此,通过阅读这些行,我可以轻松检测出哪些类和测试失败了。

但是,在 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

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

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

谢谢。

最佳答案

每个测试类我得到一个文件,所以我花了一点时间弄清楚这个:你正在使用一个测试套件。

使用测试套件时,所有测试结果都以套件的名称结束在一个文件中。

没有更改此行为的选项。试试file a feature request .

关于java - 有没有办法强制 Maven Surefire 或 JUnit 在从测试套件执行时指示失败的测试类的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6033742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com