junit基礎
JUnit 4 使用 Java 5 中的註解(annotation),以下是JUnit 4 常用的幾個 annotation 介紹
@Before:初始化方法
@After:釋放資源
@Test:測試方法,在這裡可以測試期望異常和超時時間
@Ignore:忽略的測試方法
@BeforeClass:針對所有測試,只執行一次,且必須為static void
@AfterClass:針對所有測試,只執行一次,且必須為static void
一個JUnit 4 的單元測試用例執行順序為:
@BeforeClass –> @Before –> @Test –> @After –> @AfterClass
每一個測試方法的呼叫順序為:
@Before –> @Test –> @After
@BeforeClass and @AfterClass | @Before and @After |
在一個類中只可以出現一次 |
在一個類中可以出現多次,即可以在多個方法的宣告前加上這兩個Annotaion標籤,執行順序不確定 |
方法名不做限制 | 方法名不做限制 |
在類中只執行一次 | 在每個測試方法之前或者之後都會執行一次 |
@BeforeClass父類中標識了該Annotation的方法將會先於當前類中標識了該Annotation的方法執行。 |
@Before父類中標識了該Annotation的方法將會先於當前類中標識了該Annotation的方法執行。 @After父類中標識了該Annotation的方法將會在當前類中標識了該Annotation的方法之後執行 |
必須宣告為public static | 必須宣告為public 並且非static |
所有標識為@AfterClass的方法都一定會被執行,即使在標識為@BeforeClass的方法丟擲異常的的情況下也一樣會。 | 所有標識為@After 的方法都一定會被執行,即使在標識為 @Before 或者 @Test 的方法丟擲異常的的情況下也一樣會。 |
@BeforeClass 和 @AfterClass 對於那些比較“昂貴”的資源的分配或者釋放來說是很有效的,因為他們只會在類中被執行一次。相比之下對於那些需要在每次執行之前都要初始化或者在執行之後都需要被清理的資源來說使用@Before和@After同樣是一個比較明智的選擇。
Junit Assert超類所提供的8個核心方法
import static org.junit.Assert.*;
1.assertEquals ([String message],expected,actual):
用來檢視物件中存的值是否是期待的值,與字串比較中使用的equals()方法類似;
2.assertFalse ([String messag],boolean condition)
assertTrue ([String messag],boolean condition):
用來檢視變數是是否為false或true,如果assertFalse()檢視的變數的值是false則
測試成功,如果是true則失敗,assertTrue()與之相反;
3.assertSame ([String message],expected,actual)
assertNotSame ([Spring message],expected,actual):
用來比較兩個物件的引用是否相等和不相等,類似於通過“==”和“!=”比較兩個物件;
(與equal有區別)
4.assertNull ([String message],java.lang.Object object)
assertNotNull ([String message],java.lang.Object object):
用來檢視物件是否為空和不為空;
5.fail ([String message]):
意為失敗,用來丟擲錯誤。fail()一旦被執行,會立即中止測試,java虛擬機器不再執行任
何別的程式碼,並且會丟擲 junit.framework.AssertionFailedError錯誤!我個人認為有
兩個用途:首先是在測試驅動開發中,由於測試用例都是在被測試的類之前編寫的,而寫成
時又不清楚其正確與否,此時就可以使用fail方法丟擲錯誤進行模擬;其次是丟擲意外的錯
誤,比如要測試的內容是從資料庫中讀取的資料是否正確,而導致錯誤的原因卻是資料庫連
接失敗,這樣便可以直接找出錯誤的根源。
在入參上標有"[ ]"的是可以選的,加上這些會讓測試程式碼出錯時報出你設定的錯誤資訊。
7個JUnit核心類之間的關係及生命週期
寫個例子測試一下,測試一下
package junit.text;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
public class Testago {
@Before
public void before() {
System.out.println("@Before");
}
@Test
public void test() {
System.out.println("@Test1");
Assert.assertEquals(5 + 5, 10);
}
@Ignore
@Test
public void testIgnore() {
System.out.println("@Ignore");
}
@Test(timeout = 50)
public void testTimeout() {
System.out.println("@Test(timeout = 50)");//單位毫秒
Assert.assertEquals(5 + 5, 10);
}
@Test(expected = ArithmeticException.class)
public void testExpected() {
System.out.println("@Test(expected = Exception.class)");
throw new ArithmeticException();
}
@After
public void after() {
System.out.println("@After");
}
@BeforeClass
public static void beforeClass() {
System.out.println("@BeforeClass");
};
@AfterClass
public static void afterClass() {
System.out.println("@AfterClass");
}
}
輸出結果
@BeforeClass
@Before
@Test(timeout = 50)
@After
@Before
@Test(expected = Exception.class)
@After
@Before
@Test1
@After
@AfterClass
相關文章
- JUnit5學習之六:引數化測試(Parameterized Tests)基礎Zed
- 在Eclipse中使用JUnit4進行單元測試(0基礎篇)Eclipse
- junit
- 基於JUnit進行的專案測試
- 基於 junit5 實現 junitperf 原始碼分析原始碼
- junit 4
- junit 使用JUnit測試預期異常
- JUnit3.8的Junit單元測試.
- 【FPGA基礎】Latch基礎FPGA
- Junit5系列-什麼是Junit5?
- JUnit basic annotation
- Junit-12
- JUnit的疑惑
- JUnit入門
- Java基礎-語法基礎Java
- Pandas 基礎 (2) - Dataframe 基礎
- 前端基礎之jQuery基礎前端jQuery
- 如何下載Junit並在eclipse上配置JunitEclipse
- [今日白學]元件的基礎的基礎的基礎元件
- 使用android studio 建立app時報錯:Could not download junit.jar(junit:junit:4.12)AndroidAPPJAR
- 【web前端基礎 | JS基礎】物件Web前端JS物件
- scala基礎語法-----Spark基礎Spark
- Java基礎-物件導向基礎Java物件
- 【基礎篇索引】索引基礎(四)索引
- 【基礎篇索引】索引基礎(三)索引
- 【基礎篇索引】索引基礎(二)索引
- 【基礎篇索引】索引基礎(一)索引
- python基礎中的基礎Python
- Junit5系列-Junit5中Assertions斷言類
- Junit5系列-Junit5中Assumptions假設類
- Junit5系列-Junit5中@Disabled禁止執行
- 基礎
- Spring整合JUnitSpring
- JUnit使用總結
- JUnit備忘錄
- JUnit —— TestSuite 的使用UI
- JUnit4教程
- JUnit使用經驗