需要在单元测试中验证阵列的大小

时间:2015-02-24 07:27:50

标签: arrays unit-testing junit mockito verify

Class Elem{
    private ArrayList<someType> arr = new ArrayList<>();

   public void addElement(someType var) {
       arr.add(var);
   }

    public someType bestelement() {
        someType first= arr.get(0);
        arr.remove(0);
        return first;
    }
}

我已经为此方法编写了测试用例并且它已成功运行但我需要知道如何确保调用remove()方法并且数组列表的大小减少了1?请告诉我如何在我的测试用例中获得arr的大小?

此方法的测试用例

Class ElemTest{
    private Elem obj = new Elem();
    private someType var1;
    private someType var2;
    private ArrayList<someType> testArr = new ArrayList<>();

    @Test
    public void bestElementTest() {
        obj.addElement(var1);
        obj.addElement(var2);
        testArr.add(var1);
        testArr.add(var2);
        someType result = testArr.get(0);
        assertEquals("test failed", result, obj.bestElem());
    }
}

1 个答案:

答案 0 :(得分:1)

鉴于您的示例很难为您提供建议,但一般而言,您可以选择将类设置为已知状态,调用方法来更新类,然后检查状态是否按预期方式发生了变化。 / p>

在这种特定情况下,如果您可以在某处访问内部列表,则可以检查列表是否已更改(即元素已被删除)。如果您无权访问内部列表,则需要检查其他内容,例如:

  • 如果在对象包含多个元素时再次调用bestElement(),则会获得不同的元素
  • 如果在对象不应再有任何元素时再次调用bestElement(),则会出现异常

这些显然依赖于能够将对象设置为上述状态之一,并且我们不知道是否可以从样本中进行该操作。

我的最后建议是将测试重点放在您希望从课堂上看到的行为,而不是实现课程的工作方式。