junit我如何断言我的方法返回一个特定的数组

时间:2014-12-02 12:05:01

标签: java junit bluej

我有一个返回数组Sighting []的方法。在我的单元测试中,索引[0]应该有一个元素(element1)。

我的问题是,我如何建立我的陈述以反映这一点?我需要断言我的getMostOfSpecies方法返回的数组在第一个索引值处包含element1。

我的(失败)测试看起来像这样

@Test
public void getMostOfSpeciesTest()
{
    try {
        birdList1.remember(sighting5);
        birdList1.remember(sighting6);
        birdList1.remember(sighting7);
        birdList1.remember(sighting8);
        assertEquals(birdList1.getMostOfSpecies("SOBI"), Sighting[???what to put here???]);
    }
    catch (Exception e) {
        fail("Failed" + e.getMessage());
    }
}

1 个答案:

答案 0 :(得分:2)

你试过Arrays.equals() [1]吗?确保你也覆盖了Sighting类的equals()方法。

assertTrue( Arrays.equals(birdList1.getMostOfSpecies("SOBI"), yourSightingArray);

[1] https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

编辑:

如果您需要检查数组是否包含一个特定对象,您可能会对Arrays.binarySearch() [2]或Arrays.asList()中的List with contains() - 方法感兴趣。所以你的断言语应该看起来像

assertTrue( Arrays.binarySearch(birdList1.getMostOfSpecies("SOBI"), theElementYouExpect) >= 0);

[2] https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#binarySearch(java.lang.Object[],%20java.lang.Object)