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

时间:2011-12-20 15:58:31

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

我已经进行了以下测试,我尝试了一下,如果实际值不等于预期值则会失败:

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

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

然而,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方法使测试失败,但无法弄明白。

1 个答案:

答案 0 :(得分:3)

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

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

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

但你需要为你的测试方法添加thrrow Throwable。您还有另一种选择,可以在断言中添加说明:

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