dzi*_*iki 4 java junit unit-testing assert
我目前正在编写一个单元测试,用于检查方法是否正确对列表进行排序。
排序方法覆盖类中的compare方法,Comparator并使用 对列表进行排序Collections.sort()。
这可能不是一个技术问题,但我正在寻找一种方法来使用 JUnit 的断言来检查列表是否正确排序......
该列表按它所持有的类型的内部参数排序,我称之为id. 因此,当列表包含 3 个 ID 为 3,1,2 的项目时,它会将它们排序为 1,2,3。
Long expected1 = listOfObjects.get(0).getId()
Long expected2 = listOfObjects.get(1).getId()
Long expected3 = listOfObjects.get(2).getId()
Run Code Online (Sandbox Code Playgroud)
然后在那些 Long 对象上使用断言看起来既不干净也不聪明。我正在寻找一个想法如何干净而巧妙地测试这个案例,但我没有想法......
IMO,您应该对compare您编写的方法进行单元测试。Collections.sort()已经通过了严格的测试!
只需进行一个简单的最终测试,以确保Collections.sort()您编写的方法正确调用了它:
private final MyComparator comparator = new MyComparator();
@Test
public greaterTest() {
MyObject o1 = new MyObject(2);
MyObject o2 = new MyObject(1);
int c = comparator.compare(o1, o2);
// assert that c is > 0
}
@Test
public lowerTest() {
MyObject o1 = new MyObject(1);
MyObject o2 = new MyObject(2);
int c = comparator.compare(o1, o2);
// assert that c is < 0
}
@Test
public equalTest() {
MyObject o1 = new MyObject(2);
MyObject o2 = new MyObject(2);
int c = comparator.compare(o1, o2);
// assert that c is == 0
}
@Test
public sortTest() {
List<MyObject> os = // ...
// call to the function that makes the call to Collections.sort
List<MyObject> expected = // sorted version of os
// assert that the sorted list is equal to the expected one
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4506 次 |
| 最近记录: |