假设我有这个课程:
public class Student
{
long studentId;
String name;
double gpa;
// Assume constructor here...
}
我有一个类似的测试:
List<Student> students = getStudents();
Student expectedStudent = new Student(1234, "Peter Smith", 3.89)
Assert(students.contains(expectedStudent)
现在,如果 getStudents() 方法将 Peter 的 GPA 计算为 3.8899999999994,那么该测试将失败,因为 3.8899999999994 != 3.89。
我知道我可以对单个双精度/浮点值进行容差断言,但是有没有一种简单的方法可以使用“包含”来完成这项工作,这样我就不必单独比较 Student 的每个字段(我将编写许多类似的测试,而我将要测试的实际类将包含更多字段)。
我还需要避免修改有问题的类(即学生)来添加自定义相等逻辑。
此外,在我的实际课程中,会有其他双精度值的嵌套列表需要使用容差进行测试,如果我必须单独断言每个字段,这将使断言逻辑更加复杂。
理想情况下,我想说“告诉我这个列表是否包含这个学生,并且对于任何浮点/双字段,与 .0001 的容差进行比较”
任何使这些断言保持简单的建议都值得赞赏。