(60)Java基础 --单元测试
目錄
一、測試的概念
二、使用Junit4.x進行單元環境
1、環境搭建
2、使用步驟
3、常見注解
三、規范的Junit測試方式
四、斷言
1、為什么要使用斷言
2、什么是斷言(猜測)
3、常用API
一、測試的概念
先認識到測試的重要性:優秀的軟件不是開發出來的,而是測試出來的。
軟件測試分類:
????????黑盒測試
????????白盒測試
黑盒測試:測試工程師
? ? ? 黑盒測試又稱功能測試,主要檢測每個功能是否都能正常使用。
? ? ? 在測試中,把程序看作一個不能打開的黑盒子,在完全不考慮程序內部結構和內部特性的情況下,進行測試,主要針對軟件界面和軟件功能進行測試。
白盒測試:開發工程師
? ? ? 白盒測試又稱結構測試、透明盒測試、邏輯驅動測試或基于代碼的測試,主要檢測程序內部邏輯是否正常
? ? ? 在測試中測試者必須檢查程序的內部結構,從檢查程序的邏輯著手,得出測試數據。按照程序內部的結構進行測試
? ? ? 這一方法是把測試對象看作一個打開的盒子,測試人員清楚盒子內部的東西以及里面是如何運作的。
測試先行的思想
? ? ? 在你不知道如何測試代碼前,就不要寫代碼去完成功能--------->測試先行。
單元測試Junit就屬于白盒測試
Java的單元測試:Junit
junit3.x ??針對于Java5之前的版本,沒有注解,得按照規范來寫測試。
junit4.x???針對于Java5以及之后的版本,使用注解,推薦.
junit5.x
二、使用Junit4.x進行單元環境
1、環境搭建
在IDAE中,導入junit的jar包
導入成功,如下圖:
2、使用步驟
1、把junit4.x的測試jar,添加到該項目中來;
2、定義一個測試類(約定俗稱的規則,非強制要求)
? ? ? 測試類的名字: XxxTest,例如要測試MyMath類型,一般定義測試類的類名為MyMathTest
3、在MyMathTest中編寫測試方法
? ? ? 例如要測試MyMath中的add方法
import org.junit.Test; public class MyMathTest {@Testpublic void testAdd() throws Exception{ } }注意
? ? ? 方法是public修飾的,無返回的,該方法上必須貼有@Test標簽。
4、鼠標放在測試方法的方法名上,右鍵點擊Run,控制臺打印測試結果。
3、常見注解
Junit4.x基于Java5開始的版本,支持注解。
常用注解:
@Test:要執行的測試方法
@Before 每次執行測試方法之前都會執行
@After 每次執行測試方法之后都會執行
@BeforeClass 在所有的Before方法之前執行,只在最初執行一次. 只能修飾靜態方法
@AfterClass 在所有的After方法之后執行,只在最后執行一次. 只能修飾靜態方法
執行順序: BeforeClass->(Before->Test-After多個測試方法)-->AfterClass
import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test;public class MyMathTest {@BeforeClasspublic static void myBeforeClass(){System.out.println("beforeClass...");}@Beforepublic void init(){System.out.println("init...");}@Testpublic void testAdd() throws Exception{System.out.println("測試add方法");}@Testpublic void testMinus(){System.out.println("測試minus方法");}@Afterpublic void myAfter(){System.out.println("myAfter...");}@AfterClasspublic static void myAfterClass(){System.out.println("afterClass...");} }執行結果
三、規范的Junit測試方式
直接生成測試類的方式
? ? ? 在要測試的類的上面右鍵,點擊Generate,然后在建及test就可以生成測試類。
如果想要測試一個類的方法,有兩種方法。
第一種測試方法:不創建新的測試類,只需要在要測試的方法上面加上@Test這個注解,但是這個測試方法不能有參數。
第二種測試方法:創建一個test測試目錄,在目錄下面創建要測試的方法的一樣包路徑,然后創建一個要測試的類的測試類,測試類的名字可以是 XxxTest 這種格式(非強制要求),然后在測試類
里面可以定義測試方法了。如下代碼示例:
要測試的類
public class MyMath {public int add(int x,int y){return x+y;} public int minus(int x,int y){return x-y;}public int multiply(int x,int y){return x*y;}public int divide(int x,int y){return x/y;} }測試類
import org.junit.Assert; import org.junit.Test; public class MyMathTest {private MyMath math = new MyMath();@Testpublic void testAdd() {int result = math.add(1,2); //執行MyMath中的add方法獲得結果//使用斷言Assert.assertEquals(3, result);}@Testpublic void testMinus() {int result = math.minus(1,2); //執行MyMath中的minus方法獲得結果//使用斷言Assert.assertEquals(-1, result);}@Testpublic void testMultiply() {int result = math.multiply(1,2); //執行MyMath中的multiply方法獲得結果//使用斷言Assert.assertEquals(2, result);}@Testpublic void testDivide() {int result = math.divide(1,2); //執行MyMath中的divide方法獲得結果//使用斷言Assert.assertEquals(0, result);} }四、斷言
1、為什么要使用斷言
注意
? ? ? 不同的公司有不同的規范和要求,大公司對于單元測試的要求較嚴格,按照公司的要求來就可以,我們在學習中為了直觀的觀察程序的執行結果還是直接使用輸出語句。
2、什么是斷言(猜測)
期望值(猜測值): ??斷言時希望是多少.
真實值(程序運行的結果): ??程序內部運算之后實際是多少.
斷言成功(猜對了): ??期望值和真實值相同,此時顯示綠條.
斷言失敗(猜錯了): ??期望值和真實值不同,此時顯示紅條
3、常用API
1、Assert.assertEquals(message, expected, actual):比較的值
???三個參數:
?????message: ?斷言失敗的提示信息,斷言成功不會顯示.
?????expected: 期望值
?????actual: ??真實值
???若真實值和期望值想等,則斷言成功.--->綠條
?
以下斷言作為了解即可
2、Assert.assertSame(message, expected, actual):比較地址,是同一個對象
???Assert.assertNotSame(message, expected, actual):斷言不是同一個對象
?
3、Assert.assertTrue(message, condition):斷言condition應該為TRUE
Assert.assertFalse(message, condition):斷言condition應該為FALSE
?
4、Assert.assertNull(message, object):斷言對象object為null
Assert.assertNotNull(message, object):斷言對象object不為null
?
5、@Test(expected=ArithmeticException.class)
???斷言該方法報錯ArithmeticException
?
6、@Test(timeout=400)
???期望該方法在400毫秒之內執行完成.
上一篇:(59)Java基礎 --反射-reflect
下一篇:(61)Java基礎 --Lambda表達式
總結
以上是生活随笔為你收集整理的(60)Java基础 --单元测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交通工程的性质、定位与“创新”(一)
- 下一篇: java美元兑换,(Java实现) 美元