JUNIT如何检查检索到的自定义对象在assertthat中是否排序
JUNIT How to check the custom object retrieved is sorted in assertthat
您好,我正在使用 Hibernate 按排序顺序检索元素 FindBy OrderBy 值。
如何检查它在 Junit 中排序?
推测您在 List<SomeType>
.
中有检索到的元素
编写一个方法,该方法将使用 Comparator<T>
迭代 List<T>
来比较连续的元素,如果一对乱序则 return false。
编写断言以使用适当的 Comparator<SomeType>
对检索到的元素调用方法。如果调用 returns false
.
则断言失败
为您感兴趣的字段创建 Comparator
。
Comparator<YourObject> cmp =
Comparator.comparing(YourObject::getOrder)
.thenComparing(YourObject::getValue);
for(int i = 0; i < yourResult.size() - 1; ++i) {
YourObject left = yourResult.get(i);
YourObject right = yourResult.get(i + 1);
if(cmp.compare(left, right) > 0) {
Assert.fail("not sorted")
}
}
很明显,还没有编译任何这段代码。
可以与 JUnit 一起使用的断言库具有比 JUnit 本身更复杂的断言。例如。使用 AssertJ 你可以写
assertThat(theList).containsExactly(firstValue, secondValue)
您好,我正在使用 Hibernate 按排序顺序检索元素 FindBy OrderBy 值。
如何检查它在 Junit 中排序?
推测您在 List<SomeType>
.
编写一个方法,该方法将使用 Comparator<T>
迭代 List<T>
来比较连续的元素,如果一对乱序则 return false。
编写断言以使用适当的 Comparator<SomeType>
对检索到的元素调用方法。如果调用 returns false
.
为您感兴趣的字段创建 Comparator
。
Comparator<YourObject> cmp =
Comparator.comparing(YourObject::getOrder)
.thenComparing(YourObject::getValue);
for(int i = 0; i < yourResult.size() - 1; ++i) {
YourObject left = yourResult.get(i);
YourObject right = yourResult.get(i + 1);
if(cmp.compare(left, right) > 0) {
Assert.fail("not sorted")
}
}
很明显,还没有编译任何这段代码。
可以与 JUnit 一起使用的断言库具有比 JUnit 本身更复杂的断言。例如。使用 AssertJ 你可以写
assertThat(theList).containsExactly(firstValue, secondValue)