我想使用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;
}
首先,您需要一个向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));
}
在这种情况下,您不需要使用mockito。模拟主要用于单元测试。测试中的对象可能依赖于其他(复杂)对象。为了隔离要测试的对象的行为,您可以用模拟真实对象行为的mock替换其他对象。如果实际对象不适合合并到单元测试中,这是有用的。
我建议先做一个单元测试教程,检查一下这个:http://www.vogella.com/tutorials/JUnit/article.html