Java 如何断言大于使用JUnit断言?
我从测试中得到了这些值Java 如何断言大于使用JUnit断言?,java,junit,Java,Junit,我从测试中得到了这些值 previousTokenValues[1] = "1378994409108" currentTokenValues[1] = "1378994416509" 我试着 // current timestamp is greater assertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1])); 我得到java.lang.Ass
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(布尔)
也有一个重载,其中字符串
是发生故障时的消息;如果你想打印某某不大于某某,你可以使用它
您还可以添加hamcrest all
作为使用匹配器的依赖项。见:
这会产生如下错误:
java.lang.AssertionError: timestamp
Expected: a value greater than <456L>
but: <123L> was less than <456L>
java.lang.AssertionError:时间戳
应为:大于的值
但是:比
在使用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);
你可以这样说
assertTrue("your fail message ",Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]));
这将通过“上一个>当前值”您也可以尝试以下简单解决方案:
previousTokenValues[1] = "1378994409108";
currentTokenValues[1] = "1378994416509";
Long prev = Long.parseLong(previousTokenValues[1]);
Long curr = Long.parseLong(currentTokenValues[1]);
Assert.assertTrue(prev > curr );
您应该将Hamcrest库添加到构建路径中。它包含所需的Matchers.class,该类具有lessThan()方法 依赖关系如下所示
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
org.hamcrest
汉克雷斯特图书馆
1.3
测试
或者,如果不需要添加额外的库,例如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 + ">");
}
}
publicstaticvoid资产大于(int大于,int小于){
资产大于(大、小、空);
}
公共静态void assertGreaterThan(整数较大、整数较小、字符串消息){
如我所知,在JUnit中,语法如下:
AssertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]), "your fail message ");
这意味着,条件在消息前面。发布整个代码以及完整的错误消息。可能您的断言语句在数组初始化之前。仅供参考,这里是指向OrderingComparison
的链接,其中包含大于:org.hamcrest
,hamcrest all
注意当您使用JUnit 4.11时,默认情况下会包含at Hamcrest,因此无需搜索依赖项。请注意。@Chanoch我有JUnit 4.12,它可传递地依赖于Hamcrest core 1.3。org.Hamcrest.CoreMatchers类上没有比方法更大的方法。如果我将Hamcrest all 1.3添加为附加依赖项,它将提供org.Hamcrest.Matc她的。比方法更好。很好的解决方案,非常干净。
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 + ">");
}
}
AssertTrue(Long.parseLong(previousTokenValues[1]) > Long.parseLong(currentTokenValues[1]), "your fail message ");