testing - 如何在 Selenium Junit 中使用 @Rule 使测试失败

标签 testing selenium junit try-catch junit-rule

我进行了以下测试,我在其中放置了 try catch ,因此如果实际值不等于预期值,它就会失败:

    try{
        Assert.assertEquals(ExpectedCount, ActualCount);
    }catch (Throwable t){
         System.out.println ("Actual value is not equal to expected value");
    }

每当我运行这个测试时,它都会通过。但是,如果预期=实际,则不会打印任何消息,这是正确的。如果它们不相等,则我打印的消息。所以测试逻辑是有效的。

但是 Juint 测试仍然通过。

我一直在尝试合并以下内容,但无法使其工作:

(在测试类的公共(public)级别添加了此内容)

@Rule

Public ErrorCollected errCollector = new ErrorCollector();

添加:

errCollector.addError(t);

System.out.println ("Actual value is not equal to expected value");

我收到错误“规则无法解析为类型”,它没有给我任何导入选项。

我一直试图找出如何使用@Rule方法使测试失败,但无法弄清楚。

最佳答案

正如@oers所说,你找不到Rule的原因可能是因为你的JUnit版本太旧了。尝试更高版本,> 4.7。

解决问题的最简单方法就是重新抛出您捕获的异常:

try {
    Assert.assertEquals(ExpectedCount, ActualCount);
} catch (Throwable t) {
    System.out.println ("Actual value is not equal to expected value");
    throw t;
}

但是您需要将 throws Throwable 添加到您的测试方法中。您还有另一种选择,可以向断言添加描述:

Assert.assertEquals("Actual value is not equal to expected value", ExpectedCount, ActualCount);

关于testing - 如何在 Selenium Junit 中使用 @Rule 使测试失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8578231/

相关文章:

testing - 测试计划/文档/管理工具

javascript - 关闭 Nightwatch 中的打印对话框?

python - 使用 Selenium 解析 html - 类名包含空格

junit - 如何忽略 Java 核心断言的覆盖范围,Eclipse Eclemma

perl - 我们如何使用 Test2::V0 测试可选的哈希字段

android - 手机锁定/休眠时不调用 ActivityInstrumentationTestCase2 中的 onCreate()

unit-testing - 您如何 mock 平等?

android - 如何使用 JUnit 测试显示 Android 日志记录输出(使用不带模拟器的 native JUnit)

excel - 自动测试 VBA UserForms - 工具和/或技术?

maven - org.apache.http.conn.HttpHostConnectException : Connect to localhost:19538 [localhost/0:0:0:0:0:0:0:1] failed: Connection refused (Connection refused)