掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流
junit是一個優(yōu)秀的開源的java單元測試框架,也是目前比較流行且使用頻率比較高的一款,今天我們就來講講junit怎么用。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比隴南網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式隴南網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋隴南地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
junit主要用于白盒測試、回歸測試、單元測試。
首先我們來新建工程,還是跟原來一樣建立。建立之后看看pom.xml文件,已經(jīng)默認的加入了junit的依賴
org.springframework.boot spring-boot-starter-test test
看看我們建立的工程,idea都給我們生成了什么樣的目錄結構
我們的junit單元測試文件就放在test/java下面,我們先看一個基礎用法,在Lesson9ApplicationTest里面增加一個方法:
- @SpringBootTest
- @RunWith(SpringRunner.class)//使用SpringRunner加載上下文
- public class Lesson9ApplicationTests {
- @Test//這個是一個test單元測試文件
- public void test1() {
- int num = new Integer(1);
- Assert.assertEquals(num,1);
- }
- }
在這個方法的左邊會有響應的圖標,第一個葉子樣的圖標標注這個是一個springboot的測試文件,在啟動的時候能看到我們正常啟動Application的banner圖標,說明加載了springboot的上下文。
我們直接在第二個圓形√加三角形的圖標點擊,就能運行了。
我們一般使用@Test的注解基本就差不多了,一般@BeforeClass會用于加載配置,而@AfterClass一般會用于釋放資源。
上面的代碼有一個陌生的Assert斷言,這個東西是干嘛的呢,簡單的可以理解為if條件。斷言里面的值應該返回什么樣的值。Assert.assertEquals(num,1)。
這個你可以理解為if(num==1)System.out.println("ok");但是這個方法有很多種重載的類
- @Test
- public void test2() {
- List
list1 = Arrays.asList("a", "b"); - List
list2 = Arrays.asList("a", "b"); - List
list3 = list2; - Assert.assertEquals(list1,list2);//通過
- Assert.assertEquals(list3,list2);//通過
- Assert.assertSame(list3,list2);//通過
- Assert.assertSame(list1,list2);//不通過,因為list1和list2分別指向不同的內(nèi)存地址
- }
我們在@SpringBootTest注解上面加上使用隨機端口啟動
- @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
- @Autowired
- private TestRestTemplate testRestTemplate;
- @Test
- public void test3() throws URISyntaxException {
- String result = testRestTemplate.getForObject("/demo/test1", String.class);
- Assert.assertEquals(result,"hello junit test");
- }
TestRestTemplate 是不是很熟悉,是的Springboot還為RestTemplate建立了專門的測試類。
注意:一定要使用隨機端口啟動,否則執(zhí)行失敗。但是筆者感覺這個專門寫個測試類很麻煩,還不如直接使用postman測試,你們覺得呢?
- @Test
- @Transactional
- public void test4() {
- User user = new User();
- user.setName("abc");
- user.setAge(19);
- user.setBirthday(new Date());
- userJpa.save(user);
- Assert.assertTrue(user.getId()!=null);
- Assert.assertNotNull(user.getId());
- }
注意:如果不想污染數(shù)據(jù)庫,可以加上@Transactional,執(zhí)行成功之后數(shù)據(jù)庫事務會回滾,不會將數(shù)據(jù)真正插入到數(shù)據(jù)庫中。
idea為我們快速的創(chuàng)建test單元測試文件提供了快捷方式
選中需要進行單元測試的方法,右鍵-->go to-->Test就會為我們創(chuàng)建單元測試文件。
文章已經(jīng)同步更新到 Java實驗室官方站點:
https://javawu.com/archives/2808

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流