[英]How to test void method with Junit testing tools?
我碰巧實現了一個方法void followlink(obj page,obj link)
,它簡單地添加了頁面和鏈接到隊列。 我試圖測試這種方法是不成功的。
我想要的是測試隊列中包含從followlink方法收到的頁面和鏈接。 我的測試類已經擴展了TestCase。 那么測試這種方法的最佳方法是什么?
JUnit FAQ有一節關於返回void
測試方法。 在您的情況下,您想要測試所調用方法的副作用 。
FAQ中給出的示例測試在添加項目后Collection
的大小發生變化。
@Test
public void testCollectionAdd() {
Collection collection = new ArrayList();
assertEquals(0, collection.size());
collection.add("itemA");
assertEquals(1, collection.size());
collection.add("itemB");
assertEquals(2, collection.size());
}
您可以在調用方法之前和之后測試隊列的大小,例如:
int size = queue.length();
followLink(page, link);
assertEquals(size+1, queue.length()); // or maybe size+2?
您可能要做的另一件事是從空隊列開始,調用followLink,然后將第一個項目出列並測試其值。
最有可能的是,您的隊列是私有的 ,因此檢查大小是行不通的。 我見過的“測試設計”解決方案是使用包私有方法和成員。 由於您的junit測試可能在同一個包中,因此他們可以訪問。
這本身就讓“ queue.length() ”副作用測試工作。
但我會更進一步:實際上,你應該考慮檢查你的方法是否插入了正確的頁面並鏈接到你的隊列。 其詳細信息需要更多關於您如何表示(和組合)頁面和鏈接的知識。
jMock解決方案也非常好,但實際上我更熟悉編寫自己的測試工具。
所以 - 在方法調用隊列之后檢查,如果傳遞給方法的值被添加到隊列中。 您需要訪問隊列(類似於getQueue())。
使用jMock庫並模擬保存隊列的存儲 ,jMock允許斷言是否調用了mocked方法以及使用了什么參數。
我們有兩種方法可以檢查以下內容:
使用下面程序中的隊列/集合大小進行驗證:(正如Patrick所指出的那樣)
@Test public void testfollowlinkAdd() { int size = queue.length(); queue.add(pageLink); //Considering an Object of PageLink Assert.assertTrue(size+1, queue.length()); }
要么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.