【问题标题】:How to use @Rule in Selenium Junit to fail a test如何在 Selenium Junit 中使用 @Rule 使测试失败
【发布时间】:2011-12-20 15:58:31
【问题描述】:

我已经进行了以下测试,我已经进行了尝试,因此如果实际值不等于预期值,它将失败:

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

每当我运行此测试时,它都会通过。但是,如果 expected=actual 不打印任何消息,这是正确的。如果它们不相等,那么我打印的消息。所以测试逻辑是有效的。

但是,Juint 测试仍然通过。

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

(在测试类的公共级别添加了这个)

@Rule

Public ErrorCollected errCollector = new ErrorCollector();

添加:

errCollector.addError(t);

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

我收到错误回复“Rule cannot be resolved to a type”它没有给我任何导入选项。

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

【问题讨论】:

  • 你捕获了junit抛出的异常,使测试失败。因此测试通过了。
  • 我将它们作为套件的一部分运行,所以我需要知道它失败了。
  • 检查你的junit版本@Rule是在junit4.7中引入的
  • 谢谢oers。现已排序。

标签: testing selenium junit try-catch junit-rule


【解决方案1】:

正如@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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多