使用mockito进行单元测试

时间:2015-02-05 09:55:13

标签: unit-testing junit mockito

我想使用mockito为bestElement()方法编写单元测试用例。 ClassA和ClassB在同一个包中。我想测试数组列表为空时以及数组列表不为空时。我是单元测试的新手。请指导我如何为这两种情况编写此方法的单元测试。还要提及是否需要任何其他信息。谢谢!

public class ClassA{

    private final ArrayList<ClassB> array = new ArrayList<>();

    public ClassB bestElement() {

    if (array.isEmpty()) {
        return null;
    }

    ClassB first = array.get(0);
    array.remove(0);
    return first;
}

2 个答案:

答案 0 :(得分:1)

首先,您需要一种方法将新元素添加到ClassB列表中。你可以使用像getArray()这样的getter。

@Test
public void testBestIsFirstElement() {
    ClassA a = new ClassA();
    ClassB best = new ClassB();
    ClassB b1 = new ClassB();
    a.getArray().add(best);
    a.getArray().add(b1);

    assertThat(a.bestElement(), equalTo(best));
}

@Test
public void testBestIsNullIfListIsEmpty() {
    ClassA a = new ClassA();

    assertThat(a.bestElement(), equalTo(null));
}

答案 1 :(得分:0)

在这种情况下,您不需要使用mockito。模拟主要用于单元测试。被测对象可能依赖于其他(复杂)对象。要隔离要测试的对象的行为,可以使用模拟真实对象行为的模拟替换其他对象。如果将真实对象合并到单元测试中是不切实际的,那么这很有用。

我建议先制作一个单元测试教程,检查一下:http://www.vogella.com/tutorials/JUnit/article.html