2

我有以下测试,我已经尝试过,所以如果实际值不等于预期值,它会失败:

    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方法使测试失败,但无法弄清楚。

4

1 回答 1

3

正如@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);
于 2011-12-20T20:14:13.790 回答