我想根據年齡對員工進行排序(簡化示例),但無法讓我的單元測試正常工作。我的比較器有什麼問題?
public class Employee{
private int age;
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
}
}
我的比較如下所示:
class AgeComparator implements Comparator<Employee>{
public int compare(Employee emp1, Employee emp2){
int emp1Age = emp1.getAge();
int emp2Age = emp2.getAge();
if(emp1Age > emp2Age)
return 1;
else if(emp1Age < emp2Age)
return -1;
else
return 0;
}
}
而且我的單元測試:
public class AgeComparatorTest {
@Test
public void testAge(){
Employee e1 = new Employee();
e1.setAge(4);
Employee e2 = new Employee();
e2.setAge(7);
List<Employee> employeeList = new ArrayList<Employee>();
employeeList.add(e1);
employeeList.add(e2);
Collections.sort(employeeList, new AgeComparator());
Employee actual = employeeList.get(0);
Assert.assertEquals(e2.getAge(), actual.getAge());
}
}
而且我期待着與7歲的員工是前4,但我得到。
junit.framework.AssertionFailedError:預期:< 7>卻被:< 4>
它不是'compareTo',@ user1329572。這是一個「Comparator」,而不是「Comparable」。 – 2012-07-29 11:50:08