我正在尝试使用 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/