需要在单元测试中验证数组的大小


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());
    }
}

鉴于您的示例,很难为您提供建议,但一般来说,您可以选择将类设置为已知状态,调用该方法,该方法会chnage该类,然后检查状态是否已以预期的方式更改。

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

  • 如果在对象包含 1 个以上元素时再次调用 bestElement((,则会得到不同的元素
  • 如果在对象不应该再有元素时再次调用 bestElement((,则会出现异常

这些显然依赖于能够将对象设置为上述状态之一,我们不知道从示例中是否可以做到这一点。

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

相关内容

  • 没有找到相关文章