Java单元测试介绍
文章目錄
- 單元測(cè)試
- 單元測(cè)試基本介紹
- 單元測(cè)試快速入門
- 單元測(cè)試常用注解
單元測(cè)試
單元測(cè)試基本介紹
單元測(cè)試:
單元測(cè)試就是針對(duì)最小的功能單元編寫測(cè)試代碼,Java程序最小的功能單元是方法,因此,單元測(cè)試就是針對(duì)Java方法的測(cè)試,進(jìn)而檢查方法的正確性。
目前測(cè)試方法是怎么進(jìn)行的, 存在什么問題?
目前我們只有在main方法調(diào)用其他方法進(jìn)行測(cè)試,如果一個(gè)方法的測(cè)試失敗了,其他方法測(cè)試會(huì)受到影響。
無法得到測(cè)試的結(jié)果報(bào)告,需要程序員自己去觀察測(cè)試是否成功。
無法實(shí)現(xiàn)自動(dòng)化測(cè)試。
JUnit單元測(cè)試框架:
JUnit是使用Java語言實(shí)現(xiàn)的單元測(cè)試框架,它是開源的,Java開發(fā)者都應(yīng)當(dāng)學(xué)習(xí)并使用JUnit編寫單元測(cè)試。
此外,幾乎所有的IDE工具都集成了JUnit,這樣我們就可以直接在IDE中編寫并運(yùn)行JUnit測(cè)試,JUnit目前最新版本是5。
JUnit優(yōu)點(diǎn):
JUnit可以靈活的選擇執(zhí)行哪些測(cè)試方法,可以一鍵執(zhí)行全部測(cè)試方法。
JUnit可以生成全部方法的測(cè)試報(bào)告。
單元測(cè)試中的某個(gè)方法測(cè)試失敗了,不會(huì)影響其他測(cè)試方法的測(cè)試。
例如下圖, 測(cè)試失敗會(huì)標(biāo)為紅色, 測(cè)試成功就是綠色
單元測(cè)試快速入門
目標(biāo):
使用單元測(cè)試進(jìn)行業(yè)務(wù)方法預(yù)期結(jié)果、正確性測(cè)試的快速入門
使用步驟:
將JUnit的jar包導(dǎo)入到項(xiàng)目中
- IDEA通常整合好了Junit框架,一般不需要導(dǎo)入。
- 如果IDEA沒有整合好,需要自己手工導(dǎo)入如下2個(gè)JUnit的jar包到模塊
編寫測(cè)試方法:該測(cè)試方法必須是公共的無參數(shù)無返回值的非靜態(tài)方法。
在測(cè)試方法上使用@Test注解:標(biāo)注該方法是一個(gè)測(cè)試方法
在測(cè)試方法中完成被測(cè)試方法的預(yù)期正確性測(cè)試。
選中測(cè)試方法,選擇“JUnit運(yùn)行” ,如果測(cè)試良好則是綠色;如果測(cè)試失敗,則是紅色
演示代碼:
首先創(chuàng)建一個(gè)UserService類, 在UserService類中創(chuàng)建兩個(gè)方法用來測(cè)試, 并特意編寫一個(gè)有錯(cuò)誤的方法
public class UserService {/**測(cè)試方法一*/public String loginName(String userName, String passWord) {if ("admin".equals(userName) && "123456".equals(passWord)) {return "登錄成功";} else {return "賬號(hào)或者密碼錯(cuò)誤";}}/**測(cè)試方法二*/public void selectName() {System.out.println(10 / 0); // 特意編寫的錯(cuò)誤代碼System.out.println("查詢成功!");} }編寫測(cè)試類和測(cè)試方法對(duì)方法進(jìn)行測(cè)試
/**編寫測(cè)試類*/ public class TestUserService {/**測(cè)試方法:1. 必須是公開的, 無返回值, 無參數(shù)2. 必須使用@Test注解對(duì)測(cè)試方法標(biāo)記*/@Testpublic void testLoginName() {UserService userService = new UserService();userService.loginName("admin", "123456");}@Testpublic void testSelectName() {UserService userService = new UserService();userService.selectName();} }單元測(cè)試常用注解
Junit常用注解-Junit 4.xxxx版本(了解)
| @Test | 測(cè)試方法 |
| @Before | 用來修飾實(shí)例方法,該方法會(huì)在每一個(gè)測(cè)試方法執(zhí)行之前執(zhí)行一次。 |
| @After | 用來修飾實(shí)例方法,該方法會(huì)在每一個(gè)測(cè)試方法執(zhí)行之后執(zhí)行一次。 |
| @BeforeClass | 用來修飾靜態(tài)方法,該方法會(huì)在所有測(cè)試方法之前只執(zhí)行一次。 |
| @AfterClass | 用來修飾靜態(tài)方法,該方法會(huì)在所有測(cè)試方法之后只執(zhí)行一次。 |
開始之前執(zhí)行的方法: 例如初始化資源的方法。
執(zhí)行完之后的方法: 例如釋放資源。
Junit常用注解-Junit 5.xxxx版本(了解)
| @Test | 測(cè)試方法 |
| @BeforeEach | 用來修飾實(shí)例方法,該方法會(huì)在每一個(gè)測(cè)試方法執(zhí)行之前執(zhí)行一次。 |
| @AfterEach | 用來修飾實(shí)例方法,該方法會(huì)在每一個(gè)測(cè)試方法執(zhí)行之后執(zhí)行一次。 |
| @BeforeAll | 用來修飾靜態(tài)方法,該方法會(huì)在所有測(cè)試方法之前只執(zhí)行一次。 |
| @AfterAll | 用來修飾靜態(tài)方法,該方法會(huì)在所有測(cè)試方法之后只執(zhí)行一次。 |
總結(jié)
以上是生活随笔為你收集整理的Java单元测试介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图像傅里叶变换--OpenCV
- 下一篇: Java处理数据成为树状结构