如何断言大于使用JUnit断言?

2022-08-31 07:58:58

我有这些来自测试的值

previousTokenValues[1] = "1378994409108"
currentTokenValues[1] = "1378994416509"

我试试

    // current timestamp is greater
    assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));

我得到的和关于调试是.java.lang.AssertionErrordetailMessagenull

我怎么能断言大于使用条件JUnit


答案 1

只是你是怎么做到的。 还有一个重载 assertTrue(字符串,布尔值),其中 是失败时的消息;如果你想打印某某不大于某某,你可以使用它。assertTrue(boolean)String

您还可以添加为依赖项以使用匹配器。请参阅 https://code.google.com/p/hamcrest/wiki/Tutorialhamcrest-all

import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;

assertThat("timestamp",
           Long.parseLong(previousTokenValues[1]),
           greaterThan(Long.parseLong(currentTokenValues[1])));

这给出了一个错误,例如:

java.lang.AssertionError: timestamp
Expected: a value greater than <456L>
     but: <123L> was less than <456L>

答案 2

在使用 JUnit 断言时,我总是使消息变得清晰明了。它节省了大量的调试时间。这样做可以避免添加对hamcrest Matchers的额外依赖性。

previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";

Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);
assertTrue("Previous (" + prev + ") should be greater than current (" + curr + ")", prev > curr);

推荐