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