JUnit-测试数组结果

时间:2018-09-14 14:51:38

标签: java junit

如何使用@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));
}

1 个答案:

答案 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"]>