如何断言大于使用JUnit Assert?

day*_*mer 107 java junit

我有这些价值来自测试

previousTokenValues[1] = "1378994409108"
currentTokenValues[1] = "1378994416509"
Run Code Online (Sandbox Code Playgroud)

我试试

    // current timestamp is greater
    assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
Run Code Online (Sandbox Code Playgroud)

我得到了调试java.lang.AssertionError和.detailMessagenull

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

ysh*_*vit 143

你是怎么做到的.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])));
Run Code Online (Sandbox Code Playgroud)

这给出了一个错误:

java.lang.AssertionError: timestamp
Expected: a value greater than <456L>
     but: <123L> was less than <456L>
Run Code Online (Sandbox Code Playgroud)

  • @Chanoch我有junit 4.12,它过渡依赖于hamcrest-core 1.3.org.hamcrest.CoreMatchers类没有更大的方法.如果我添加hamcrest-all 1.3作为附加依赖项,它提供org.hamcrest.Matchers.greaterThan方法. (7认同)
  • `<groupId> org.hamcrest </ groupId>`,`<artifactId> hamcrest-all </ artifactId>` (6认同)
  • 仅供参考,这里是指向`orderingComparison`的链接,其中包含`greaterThan`:http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/number/OrderingComparison.html (3认同)
  • 小心[hamcrest和junit参考的顺序](http://stackoverflow.com/a/9659820/4794). (3认同)
  • 请注意,使用JUnit 4.11时默认包含Hamcrest,因此无需搜索依赖项. (2认同)

Qwe*_*rky 18

当使用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);
Run Code Online (Sandbox Code Playgroud)


use*_*666 13

你也可以尝试下面简单的soln:

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

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

Assert.assertTrue(prev  > curr );   
Run Code Online (Sandbox Code Playgroud)


小智 9

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

依赖性如下.

<dependency>
  <groupId>org.hamcrest</groupId>
  <artifactId>hamcrest-library</artifactId>
  <version>1.3</version>
  <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)


小智 5

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

AssertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]), "your fail message ");
Run Code Online (Sandbox Code Playgroud)

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