當前位置:
首頁 > 知識 > Junit4使用學習-初步教程

Junit4使用學習-初步教程

1、快速入門

簡介

JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.

xUnit是一套基於測試驅動開發的測試框架,包括PythonUnit、CppUnit、JUnit。JUnit使用斷言機制,與預期結果進行比對。

原則

測試方法上必須使用@Test進行修飾

測試方法必須使用public void 進行修飾,不能待任何的參數

新建一個源代碼目錄

測試類的爆應該和被測試類保持一致

測試單元中的每個方法必須可以獨立測試,測試方法間不能有任何的依賴

測試類使用Test作為類名的後綴

測試方法使用test作為方法名的前綴

Calculate.java

public class Calculate { public int add(int a,int b) { return a + b; } public int subtract(int a, int b) { return a - b; } public int multiply(int a,int b) { return a * b; } public int divide(int a ,int b) { return a / b; } }

註:

Failure,一般由單元測試使用的方法判斷失敗所引起的,這表示測試點發現了問題,就是說問題輸出的結果和我們預期的不一樣。

測試用例不是用來證明你是對的,是用來證明你們沒有錯。

測試用例用來達到想要的預期結果,但對於邏輯錯誤無能為力。

error是有代碼異常引起的,它可以產生於測試代碼本身的錯誤,也可以是測試代碼中一個隱藏的bug

CalculateTest.java

public class CalculateTest { @Test public void testAdd() { assertEquals(6, new Calculate().add(3,3)); } @Test public void testSubtract() { assertEquals(3, new Calculate().subtract(5,2)); } @Test public void testMultiply() { assertEquals(4, new Calculate().multiply(2, 2)); } @Test public void testDivide() { assertEquals(3, new Calculate().divide(6, 2)); } }

ErrorAndFailureTest.java

public class ErrorAndFailureTest { /* * 1.Failure一般由單元測試使用的斷言方法判斷失敗所引起的,這經表示 測試點發現了問題 * ,就是說程序輸出的結果和我們預期的不一樣。 * 2.error是由代碼異常引起的,它可以產生於測試代碼本身的錯誤,也可以是被測試代碼中的 * 一個隱藏的bug * 3.測試用例不是用來證明你是對的,而是用來證明你沒有錯。 */ @Test public void testAdd() { assertEquals(5, new Calculate().add(3,3)); } @Test public void testDivide() { assertEquals(3, new Calculate().divide(6, 0)); } }

2、使用詳解

生命周期

JunitFlowTest.java

public class JunitFlowTest { /* * 1.@BeforeClass修飾的方法會在所有方法被調用前被執行, * 而且該方法是靜態的,所以當測試類被載入後接著就會運行它, * 而且在內存中它只會存在一份實例,它比較適合載入配置文件。 * 2.@AfterClass所修飾的方法通常用來對資源的清理,如關閉資料庫的連接 * 3.@Before和@After會在每個測試方法的前後各執行一次。 * */ @BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("this is beforeClass..."); } @AfterClass public static void tearDownAfterClass() throws Exception { System.out.println("this is afterClass..."); } @Before public void setUp() throws Exception { System.out.println("this is before..."); } @After public void tearDown() throws Exception { System.out.println("this is after"); } @Test public void test1() { System.out.println("this is test1..."); } @Test public void test2(){ System.out.println("this is test2..."); } }

@BeforeClass-->@Before-->@Test1-->@After-->@Before-->@Test2-->@After-->@AfterClass

AnotationTest.java

public class AnotationTest { @Test(expected=ArithmeticException.class) public void testDivide() { assertEquals(3, new Calculate().divide(6, 0)); } @Ignore("...") @Test(timeout=2000) public void testWhile() { while(true) { System.out.println("run forever..."); } } @Test(timeout=3000) public void testReadFile(){ try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

3、深入使用

測試套件(測試套件就是組織測試類一起運行的)使用步驟:

SuiteTest.java

@RunWith(Suite.class) @Suite.SuiteClasses() public class SuiteTest { /* * 1、寫一個作為測試套件的入口類,這個類里不包含其他的方法 * 2、更改測試運行器Suite.class * 3、將要測試的類作為數組傳入到Suite.SuiteClasses({}) */ }

TaskTest1.java(TaskTest2、TaskTest3)模板一樣

參數化設置

ParameterTest.java

@RunWith(Parameterized.class) public class ParameterTest { /* * 1.更改默認的測試運行器為RunWith(Parameterized.class) * 2.聲明變數來存放預期值 和結果值 * 3.聲明一個返回值 為Collection的公共靜態方法,並使用@Parameters進行修飾 * 4.為測試類聲明一個帶有參數的公共構造函數,並在其中為之聲明變數賦值 */ int expected =0; int input1 = 0; int input2 = 0; @Parameters public static Collection t() { return Arrays.asList(new Object[][]{ , }) ; } public ParameterTest(int expected,int input1,int input2) { this.expected = expected; this.input1 = input1; this.input2 = input2; } @Test public void testAdd() { assertEquals(expected, new Calculate().add(input1, input2)); } }


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 java學習吧 的精彩文章:

Java程序員面試的5 點小技巧
Java常犯5個錯!
學了Java開發 能給大家多少崗位從事
一篇文章教會你用 Java微信語音開發
Java的設計模式-備忘錄模式

TAG:java學習吧 |

您可能感興趣

教程 | 如何使用 Kubernetes 輕鬆部署深度學習模型
Premiere自學教程
RabbitMQ學習系列教程五四:Topic的使用
MR教程-Bridge
TensorFlow和深度學習入門教程
Linux 基礎教程 30-tcpdump命令-2
【進階篇】Recurrent Group教程
Spring Boot 基礎教程 ( 二 ) :快速構建 Spring Boot/Cloud 工程
photoshop教程|UI教程|cake圖標
Snapseed教程
Python之日誌處理-logging模塊使用教程
RabbitMQ學習系列教程六:Fanout交換機的使用
Python 機器學習教程:預測Airbnb 價格(2)
史萊姆牧場BetterBuild使用教程
官方推薦!用TensorFlow 2.0做深度學習入門教程
《Digital-Tutors-AE動畫原理12則教程》中文翻譯教程+工程文件分享
Mac新手入門使用教程 - Finder 技巧
Opus Magnum新手操作教程
乾貨|BERT fine-tune 終極實踐教程
Illustrator設計蘇寧818字體設計教程