136

我有这些值来自测试

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

我尝试

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

我得到了java.lang.AssertionErrordetailMessage调试是null

如何在使用中断言大于条件JUnit

4

8 回答 8

179

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

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

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>
于 2013-09-12T13:57:22.010 回答
28

使用 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);
于 2013-09-12T13:58:34.460 回答
14

您也可以尝试以下简单的解决方案:

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

Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);

Assert.assertTrue(prev  > curr );   
于 2014-10-17T18:36:50.473 回答
10

您应该将 Hamcrest-library 添加到您的构建路径中。它包含所需的具有 lessThan() 方法的 Matchers.class。

依赖如下。

<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-library</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>
于 2016-09-11T14:05:47.087 回答
3

或者,如果不希望添加额外的库,则可以仅使用依赖hamcrest项将逻辑实现为实用程序方法:junit

public static void assertGreaterThan(int greater, int lesser) {
    assertGreaterThan(greater, lesser, null);
}

public static void assertGreaterThan(int greater, int lesser, String message) {
    if (greater <= lesser) {
        fail((StringUtils.isNotBlank(message) ? message + " ==> " : "") +
                "Expected: a value greater than <" + lesser + ">\n" +
                "But <" + greater + "> was " + (greater == lesser ? "equal to" : "less than") + " <" + lesser + ">");
    }
}
于 2018-10-19T17:26:47.423 回答
2
assertTrue("your message", previousTokenValues[1].compareTo(currentTokenValues[1]) > 0)

这传递了以前的>当前值

于 2013-09-12T14:12:17.257 回答
2

据我所知,目前,在 JUnit 中,语法是这样的:

AssertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]), "your fail message ");

意味着,条件在消息的前面。

于 2020-05-19T21:37:13.877 回答
0

你可以这样说

  assertTrue("your fail message ",Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
于 2013-09-12T14:01:40.663 回答