java - 为什么我的 JUnit 错误收集器没有报告错误?

标签 java junit

我正在尝试使用 JUnit 错误收集器报告错误。尽管我的断言失败,但 JUnit 中未报告错误。但我在控制台中收到“错误”消息。

@Rule
public ErrorCollector errcol = new ErrorCollector();

@Then("^Business alert message on the screen$")
public void Business_alert_message_on_the_screen(Result_Update) throws Throwable {
    if (userType.equals("Admin")) {
        try {
            Assert.assertEquals("Update button is not present for the admin user", true, Result_Update);

        } catch (Throwable t) {
            errcol.addError(t);
            System.out.println("Error");
        }
     }
}

最佳答案

tl;dr : Make sure your test class doesn't extend TestCase.

当我将 JUnit 4 与 IntelliJ IDEA 一起使用时,我遇到了类似的问题。我天真地在对话框中选择了 TestCase 的基类,这是 JUnit 3 的默认设置,因为我认为“拥有这些方便的 this#assert* 会很好。 > 方法”(JUnit 4 的默认值为 null)。错误的代码(不起作用)如下:

public class SassCompilerTest extends TestCase {
    @Rule
    public ErrorCollector collector = new ErrorCollector();

    @Test
    public void testCompiler() throws IOException {
        collector.checkThat(true, CoreMatchers.equalTo(false));
    }
}

但是,在 JUnit 4 中,这导致许多功能无法运行。删除父类修复了测试:

public class SassCompilerTest {
    @Rule
    public ErrorCollector collector = new ErrorCollector();

    @Test
    public void testCompiler() throws IOException {
        collector.checkThat(true, CoreMatchers.equalTo(false));
    }
}

该解决方案是由comment向我建议的。 @StefanBirkner 在另一个答案中提到的 Cucumber 问题。读完后,我尝试扩展 ErrorCollector 以使 ErrorCollector#verify 公开并从 @After 方法调用它,但是 @After 方法没有被调用,这让我意识到 TestRunner(这是 IntelliJ 的默认设置)或测试本身出了问题。

关于java - 为什么我的 JUnit 错误收集器没有报告错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31443474/

相关文章:

java - Spring Boot - 模拟对外部 API 的 POST REST 请求

spring - 如何推迟调用@PostConstruct,直到jUnit设置测试上下文

java - IncompatibleClassChangeError : Implementing class in struts 2. 5.13

java - 为什么我的测试在单次执行中运行不到 1 秒,但在 Maven 构建中运行超过 20 秒?

java - 如何在 java 中使 JFrame 模糊?

java - <jsp :forward> or <jsp:include> actions in a JSP needs buffering to be enabled?

java - JUnit @Ignore 有用吗?

java - 当服务部署在服务器中时,如何进行 JUnit 测试 Jersey?

java - 用Java模拟链表

java - 嵌套异常是 org.hibernate.PropertyAccessException : Could not set field value