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

这些数值来自于一个测试

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

我尽力了

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

我得到的 java.lang.AssertionError和调试时的 detailMessagenull

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

199480 次浏览

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

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

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);

你可以这么说

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

这将传递以前的 > 当前值

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

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


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


Assert.assertTrue(prev  > curr );

您应该将 Hamcrest-library 添加到您的 Build Path 中,它包含所需的 Matchers.class,该类具有 lesThan ()方法。

依赖性如下。

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

或者,如果添加额外的库,如 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 + ">");
}
}

我认识到,目前在 JUnit 中,语法是这样的:

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

也就是说,病情在信息前面。