如何使用@Test
中的Junit单元测试比较数组以确保期望值与实际值相同
这是我到目前为止所拥有的:
@之前
public void initialize() throws Exception{
bob = new Student(18, "Bob Maher", new String []{"COSC 222","COSC 311", "MATH 200", "MATH 220"});
bill = new Student(19, "Bill Cosby", new String []{"COSC 222", "COSC 404", "ENGL 112"});
ben = new Student(24, "Ben Mckenny", new String []{"COSC 222", "COSC 111", "MATH 200", "PHYS 101"});
}
@Test
public void testGetClasses() throws Exception {
//TODO: test that the classes array returned is correct
ArrayList<Student> list = new ArrayList<>(Arrays.asList(bob, bill, ben));
ArrayList<Student> results = Arrays.asList(bob,bill.ben))
assertTrue(list.containsAll(results) && results.containsAll(list));
}
答案 0 :(得分:4)
您可以使用AssertJ并使用containsExactly()
或containsExactlyInAnyOrder()
。例如:
String[] expected = { "ABC", "123" };
String[] actual = { "ABC", "234" };
assertThat(actual).containsExactly(expected);
会产生错误:
java.lang.AssertionError:
Expecting:
<["ABC", "234"]>
to contain exactly (and in same order):
<["ABC", "123"]>
but some elements were not found:
<["123"]>
and others were not expected:
<["234"]>