寫在前面的話:
鄙人星雲,今年六月份,剛到北京入職了一家國企,由于剛進項目對現有的項目業務還不是很熟悉,但是上司已經下了指令,要我給現有的項目寫單元測試代碼,項目比較大,業務還不熟悉,如果全部手寫測試代碼,必然是個累死人不償命的事情。
那麼有沒有更好的解決方案呢?答案自然是肯定的。
解決方案:
通過查詢資料得知,在碼農界有這樣一個Eclipse插件——CodePro Analytix,通過這個插件可以自動批量生成單元測試代碼。
CodePro Analytix是一個基于Eclipse的快速開發環境,能夠自動的完成重複的任務使Java開發者快速的開發出高品質的軟體。能夠保證代碼品質,包括代碼評審、metric、設計模式、測試,等等
使用指南:
- CodePro Analytix 插件下載下傳
-
下載下傳後解壓到一個路徑下,路徑中最好不要有中文。
解壓後像這樣:
- 打開你的Eclipse IDE
我用的IDE是STS——Spring 官方推出的Eclipse發行版。
- Help------> Install new Software
5.Work With: --------> add... ------->Local...
浏覽找到剛才解壓的路徑
6.選中這三個選項,然後一步一步安裝即可
7.安裝完成後重新開機下你的Eclipse 即可。
8.修改配置
Windows------> Perference ——————Code Pro ------->JUnit ----->Generated Code
預設是這樣的:
- 但是一般我們需要修改下才符合我們正常的使用
10.最後選中項目中的源碼檔案或者源碼檔案夾或項目名,右鍵------>Code Pro Tools----->Generate Test Case即可
這樣,批量的單元測試代碼就生成了。
接下來講解一些注意事項:
- 關于JUnit報initializationError的解決方法
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
2.關于一些莫名奇妙無法處理的異常處理
比如莫名奇妙的空指針異常,可以在測試注解中添加這個值
@Test(expected = java.lang.NullPointerException.class)
或者如果有其他的異常類似這個:
@Test(expected = org.apache.axiom.om.OMException.class)
public void testSerialize_1()
throws Exception {
PostEvent fixture = new PostEvent();
fixture.setEventName("");
fixture.setEventData("");
fixture.localEventNameTracker = true;
fixture.localEventDataTracker = true;
QName parentQName = new QName("");
OMFactory factory = new OMLinkedListImplFactory();
MTOMAwareXMLStreamWriter xmlWriter = new MTOMAwareOMBuilder();
fixture.serialize(parentQName, factory, xmlWriter);
// add additional test code here
// An unexpected exception was thrown in user code while executing this test:
// org.apache.axiom.om.OMException: localname can not be null or empty
// at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:135)
// at org.apache.axiom.om.impl.llom.OMElementImpl.<init>(OMElementImpl.java:118)
// at org.apache.axiom.om.impl.llom.factory.OMLinkedListImplFactory.createOMElement(OMLinkedListImplFactory.java:75)
// at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:101)
// at org.apache.axis2.databinding.utils.writer.MTOMAwareOMBuilder.writeStartElement(MTOMAwareOMBuilder.java:92)
// at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:178)
// at com.travelsky.dcsi.PostEvent.serialize(PostEvent.java:151)
}
看到這樣的資訊就添加注解:
@Test(expected = org.apache.axis2.databinding.ADBException.class)
- 關于斷言測試常用的幾種用法:
//如果result不為空傳回true測試通過
assertNotNull(result);
//第一個參數是期待結果,第二個是實際的引用對象
assertEquals(true, result.hasNext());
//支援多種資料類型
assertEquals(2, result.next());
//期待結果是null 接受一個引用對象參數
assertNull(result)
本篇完~
交流即分享,分享才能進步! 不對之處,還請各位前輩多多指教。 by 星雲 *