Как утверждать больше, чем использовать 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]));