이 값은 테스트에서 비롯됩니다.
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
답변
당신이 그것을 한 방법. 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 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);
답변
아래 간단한 해결책을 시도해 볼 수도 있습니다.
previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";
Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);
Assert.assertTrue(prev > curr );
답변
빌드 경로에 Hamcrest-library를 추가해야합니다. lessThan () 메서드가있는 필요한 Matchers.class가 포함되어 있습니다.
아래와 같이 종속성.
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
답변
assertTrue("your message", previousTokenValues[1].compareTo(currentTokenValues[1]) > 0)
이것은 이전> 현재 값에 전달됩니다.
답변
또는과 같은 추가 라이브러리를 추가하는 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 ");
즉, 조건이 메시지 앞에 있습니다.