2015-02-24 47 views
-3
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()); 
    } 
} 
+0

我们的信息太少,无法回答。发布的代码不会编译,如果发布了,它总是会抛出异常。 – 2015-02-24 07:32:05

+0

这段代码甚至没有编译 - 你不能在'return'之后有另一个语句。 – Mureinik 2015-02-24 07:32:07

+1

@Mureinik现在就来看看。 – 2015-02-24 07:42:20

回答

1

鉴于你的榜样其难度劝你,但总体而言,你的选择是类集合到一个已知的状态,叫你方法,chnages类,然后检查你的状态是否改变了你的期望。

在这种特定情况下,如果您有权访问内部列表,那么您可以检查列表是否已更改(即元素已被删除)。如果您没有访问到内部列表中,那么你需要检查其他的东西,比如:

  • 如果调用bestElement()时再次对象包含超过1元,你得到一个不同的元素
  • 如果您再次调用bestElement()时,对象不应该有任何更多的元素,你会得到一个异常

这些显然依靠的是能够给对象设置成以上的国家之一,我们不知道这是否是可能的样品。

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

+0

谢谢..that工作.. – 2015-02-24 09:07:40