Как утверждать больше, чем использовать JUnit Assert?

У меня есть эти значения, исходящие из теста

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

и я стараюсь

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

Я получаю java.lang.AssertionError и detailMessage при отладке null.

Как я могу утверждать больше, чем условия при использовании JUnit

Ответ 1

Как вы это сделали. assertTrue(boolean) также имеет перегрузку assertTrue(String, boolean), где String - это сообщение в случае отказа; вы можете использовать это, если хотите напечатать, что такое-то не больше, чем то-то и то-то.

Вы также можете использовать матчи. См. 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>

Ответ 2

При использовании утверждений JUnit я всегда делаю сообщение приятным и понятным. Это экономит огромное количество времени отладки. Выполнение этого способа позволяет избежать добавления добавленной зависимости от совпадений hamcrest.

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

Ответ 3

Вы должны добавить Hamcrest-библиотеку в свой путь сборки. Он содержит необходимый Matchers.class, который имеет метод lessThan().

Зависимость, как показано ниже.

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

Ответ 4

вы также можете попробовать под простым soln:

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

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

Assert.assertTrue(prev  > curr );   

Ответ 5

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

это проходит для предыдущих > текущих значений

Ответ 6

Вы можете записать это как

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