如何断言大于使用JUnit Assert?

时间:2013-09-12 13:53:44

标签: java junit

我将这些值来自测试

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

我试试

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

调试时java.lang.AssertionErrordetailMessagenull

如何在使用JUnit

时断言大于条件

8 个答案:

答案 0 :(得分:133)

你是怎么做到的。 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>

答案 1 :(得分:15)

当使用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);

答案 2 :(得分:11)

你也可以尝试以下简单的解决方法:

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

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

Assert.assertTrue(prev  > curr );   

答案 3 :(得分:9)

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

依赖性如下。

<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-library</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>

答案 4 :(得分:1)

assertTrue("your message", previousTokenValues[1].compareTo(currentTokenValues[1]) > 0)

这传递给前一个&gt;当前值

答案 5 :(得分:1)

或者,如果不希望添加诸如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 + ">");
    }
}

答案 6 :(得分:1)

据我所知,目前在JUnit中,语法如下:

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

这意味着条件位于消息的前面。

答案 7 :(得分:0)

你可以这样说吧

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