junit4.x and 3.x
junit4.x
(1)、使用junit4.x版本進行單元測試時,不用測試類繼承TestCase父類,因為,junit4.x全面引入了Annotation來執行我們編寫的測試。
(2)、junit4.x版本,引用了註解的方式,進行單元測試;
(3)、junit4.x版本我們常用的註解:
(2)、junit4.x版本,引用了註解的方式,進行單元測試;
(3)、junit4.x版本我們常用的註解:
A、@Before 註解:與junit3.x中的setUp()方法功能一樣,在每個測試方法之前執行;
B、@After 註解:與junit3.x中的tearDown()方法功能一樣,在每個測試方法之後執行;
C、@BeforeClass 註解:在所有方法執行之前執行;
D、@AfterClass 註解:在所有方法執行之後執行;
E、@Test(timeout = xxx) 註解:設定當前測試方法在一定時間內執行完,否則返回錯誤;
F、@Test(expected = Exception.class) 註解:設定被測試的方法是否有異常丟擲。丟擲異常型別為:Exception.class;
G、@Ignore 註解:註釋掉一個測試方法或一個類,被註釋的方法或類,不會被執行。
demo:
package com.an.junit;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class TestMyNumber {
private MyNumber myNumber;
@BeforeClass
// 在所有方法執行之前執行
public static void globalInit() {
System.out.println("init all method...");
}
@AfterClass
// 在所有方法執行之後執行
public static void globalDestory() {
System.out.println("destory all method...");
}
@Before
// 在每個測試方法之前執行
public void setUp() {
System.out.println("start setUp method");
myNumber = new MyNumber();
}
@After
// 在每個測試方法之後執行
public void tearDown() {
System.out.println("end tearDown method");
}
@Test(timeout=600)// 設定限定測試方法的執行時間 如果超出則返回錯誤
public void testAdd() {
System.out.println("testAdd method");
int result = myNumber.add(2, 3);
assertEquals(5, result);
}
@Test
public void testSubtract() {
System.out.println("testSubtract method");
int result = myNumber.subtract(1, 2);
assertEquals(-1, result);
}
@Test
public void testMultiply() {
System.out.println("testMultiply method");
int result = myNumber.multiply(2, 3);
assertEquals(6, result);
}
@Test
public void testDivide() {
System.out.println("testDivide method");
int result = 0;
try {
result = myNumber.divide(6, 2);
} catch (Exception e) {
fail();
}
assertEquals(3, result);
}
@Test(expected = Exception.class)
public void testDivide2() throws Exception {
System.out.println("testDivide2 method");
myNumber.divide(6, 0);
fail("test Error");
}
public static void main(String[] args) {
}
}
junit3.x
(1)、使用junit3.x版本進行單元測試時,測試類必須要繼承於TestCase父類;
(2)、測試方法需要遵循的原則:
A、public的
B、void的
C、無方法引數
D、方法名稱必須以test開頭
(3)、不同的Test Case之間一定要保持完全的獨立性,不能有任何的關聯。
(4)、我們要掌握好測試方法的順序,不能依賴於測試方法自己的執行順序。
demo:
public class TestMyNumber extends TestCase {
private MyNumber myNumber;
public TestMyNumber(String name) {
super(name);
}
// 在每個測試方法執行 [之前] 都會被呼叫
@Override
public void setUp() throws Exception {
// System.out.println("歡迎使用Junit進行單元測試…");
myNumber = new MyNumber();
}
// 在每個測試方法執行 [之後] 都會被呼叫
@Override
public void tearDown() throws Exception {
// System.out.println("Junit單元測試結束…");
}
public void testDivideByZero() {
Throwable te = null;
try {
myNumber.divide(6, 0);
Assert.fail("測試失敗");
} catch (Exception e) {
e.printStackTrace();
te = e;
}
Assert.assertEquals(Exception.class, te.getClass());
Assert.assertEquals("除數不能為 0 ", te.getMessage());
}
}
相關文章
- Cocos Creator 3.x缺陷
- yiigo 3.x 版本釋出Go
- ClickHouse ORM 3.x 釋出啦ORM
- Vue CLI 3.X 初體驗Vue
- Vue CLI 3.x 簡單體驗Vue
- Ant Design 3.X 主題修改
- 使用 .NET Core 3.x 構建 RESTFUL ApiRESTAPI
- hadoop 3.x安裝注意事項Hadoop
- ASP.NET Core 3.x API版本控制ASP.NETAPI
- vue/cli 3.x配置proxyTable跨域Vue跨域
- Hadoop 3.x 新特性剖析系列1Hadoop
- Hadoop 3.x 新特性剖析系列2Hadoop
- webpack 3.X學習之多頁面打包Web
- Python 3.x自定義迭代器物件Python物件
- 使用 .NET Core 3.x 構建 RESTFUL Api (續)RESTAPI
- vue cli 3.x 專案部署到 github pagesVueGithub
- Vue.js 3.x 雙向繫結原理Vue.js
- Vue3教程:Vue 3.x 快在哪裡?Vue
- 《Vue.js 3.x快速入門》簡介Vue.js
- Spark 3.x Spark Core詳解 & 效能優化Spark優化
- antd 3.x升4.x踩坑之路~
- Tkinter(2.x 與3.X的區別)
- gRPC by .net core 3.x——概念、語法、編譯RPC編譯
- Vue-CLI 3.x 跨域問題處理Vue跨域
- maatwebsite/excel匯入從2.1升級到3.xWebExcel
- ionic 2.x 3.x專案結構解析
- OkHttp 3.x 原始碼解析之Interceptor 攔截器HTTP原始碼
- Apache Lucene 5.0釋出,不再相容3.X系列版本Apache
- AndroidStudio升級3.x之後太坑了Android
- 一文詳解 OpenGL ES 3.x 渲染管線
- [開源ORM] SqliteSugar 3.x .net Core版本成功上線ORMSQLite
- Spring 3.x 企業應用開發實戰Spring
- react-navigation升級3.x 問題解決方案ReactNavigation
- Quartz.net 3.x使用總結(一)——入門介紹quartz
- Cocos2d-x 3.x遊戲開發之旅遊戲開發
- wxWidgets 2.9.2svn(3.x)最小體積編譯方法編譯
- Vue-CLI 3.x 部署專案至生產伺服器Vue伺服器
- Vue-CLI 3.x 自動部署專案至伺服器Vue伺服器