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((,则会出现异常
这些显然依赖于能够将对象设置为上述状态之一,我们不知道从示例中是否可以做到这一点。
我的最后一条建议是将测试重点放在您希望从类中看到的行为上,而不是实现类的工作方式。