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

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第三季老師布置的作業:隨機字元串
程序員,你的強迫症是幾級?進來對號入座!

TAG:java學習吧 |

您可能感興趣

教程 | 如何使用 Kubernetes 輕鬆部署深度學習模型
Premiere自學教程
TensorFlow和深度學習入門教程
RabbitMQ學習系列教程五四:Topic的使用
photoshop教程|UI教程|cake圖標
史萊姆牧場BetterBuild使用教程
RabbitMQ學習系列教程六:Fanout交換機的使用
Opus Magnum新手操作教程
Snapseed教程
snapseed修圖教程
【進階篇】Recurrent Group教程
Sqlmap使用教程
Python 標準庫之 collections 使用教程
PullOver簡單使用教程
Python之Sklearn使用教程
欲學機器學習必先掌握Shell,AI工程師自製教程,獲Reddit網友400+點贊
Python之日誌處理-logging模塊使用教程
Spring Boot 基礎教程 ( 二 ) :快速構建 Spring Boot/Cloud 工程
官方推薦!用TensorFlow 2.0做深度學習入門教程
PS學習教程攝影后期 Photoshop影樓後期修圖實用技巧