[英]when testing a class, check the work inside the method using a Junit and a Mockito
我有一個 class 測試,我遇到了困難,如何檢查方法 addBeginList() 中的操作“list.add (int)”是否發生在特定列表上。 使用 Moсkito 庫,檢查是否在 class 的列表中調用了特定方法?
public class ClassA implements IClassA {
private List<Integer> list;
public ClassA (List<Integer> list) {
this.list = list;
}
@Override
public int addBeginList() {
long t1 = System.currentTimeMillis();
list.add(5);
long t2 = System.currentTimeMillis();
return (int) t2 - (int) t1;
}
測試 class
@RunWith(MockitoJUnitRunner.class)
public class ClassATest{
private ClassA mockClassA;
private static final int EXPECTED = 0;
private static final int DELTA = 1000;
private static final int SIZE = 7000;
@Before
public void setUp() throws Exception {
mockClassA = Mockito.mock(ClassA.class);
mockClassA.initialize(SIZE);
mockClassA.addBeginList();
}
@Test
public void initialize() {
}
@Test
public void addBeginList() {
assertEquals(EXPECTED, mockClassA.addBeginList(), DELTA);
}
第一步是確保測試 ClassA 的真實實例,而不是模擬。
接下來,您可以向它提供一個真實列表並檢查它是否包含某個元素,或者向它提供一個模擬列表並使用 Mockito 檢查是否調用了特定方法:
verify(mockedList).add(5)
我找到了解決問題的方法:
public class ClassA extends AbstractList<Integer> implements IClassA {///}
在測試 class 中:
private List<Integer> mockedList;
private ClassA classA;
@Before
public void setUp() throws Exception {
mockedList = Mockito.mock(ClassA.class);
classA = new ClassA(mockedList);
}
@Test
public void addBeginList() {
assertEquals(EXPECTED, classA.addBeginList(), DELTA);
verify(mockedList).add(5);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.