日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
這么好用的Java單元測(cè)試工具,你還在猶豫什么?

junit是一個(gè)優(yōu)秀的開源的java單元測(cè)試框架,也是目前比較流行且使用頻率比較高的一款,今天我們就來講講junit怎么用。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比隴南網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式隴南網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋隴南地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。

junit主要用于白盒測(cè)試、回歸測(cè)試、單元測(cè)試。

首先我們來新建工程,還是跟原來一樣建立。建立之后看看pom.xml文件,已經(jīng)默認(rèn)的加入了junit的依賴

 
 
 
 
  1.  
  2.     org.springframework.boot 
  3.     spring-boot-starter-test 
  4.     test 
  5.  

看看我們建立的工程,idea都給我們生成了什么樣的目錄結(jié)構(gòu)

我們的junit單元測(cè)試文件就放在test/java下面,我們先看一個(gè)基礎(chǔ)用法,在Lesson9ApplicationTest里面增加一個(gè)方法:

 
 
 
 
  1. @SpringBootTest 
  2. @RunWith(SpringRunner.class)//使用SpringRunner加載上下文 
  3. public class Lesson9ApplicationTests { 
  4.     @Test//這個(gè)是一個(gè)test單元測(cè)試文件 
  5.     public void test1() { 
  6.         int num = new Integer(1); 
  7.         Assert.assertEquals(num,1); 
  8.     } 

在這個(gè)方法的左邊會(huì)有響應(yīng)的圖標(biāo),第一個(gè)葉子樣的圖標(biāo)標(biāo)注這個(gè)是一個(gè)springboot的測(cè)試文件,在啟動(dòng)的時(shí)候能看到我們正常啟動(dòng)Application的banner圖標(biāo),說明加載了springboot的上下文。

我們直接在第二個(gè)圓形√加三角形的圖標(biāo)點(diǎn)擊,就能運(yùn)行了。

junit連常用的注解

  1. @RunWith:標(biāo)識(shí)為JUnit的運(yùn)行環(huán)境;
  2. @SpringBootTest:獲取啟動(dòng)類、加載配置,確定裝載Spring Boot;
  3. @Test:聲明需要測(cè)試的方法;
  4. @BeforeClass:針對(duì)所有測(cè)試,只執(zhí)行一次,且必須為static void;
  5. @AfterClass:針對(duì)所有測(cè)試,只執(zhí)行一次,且必須為static void;
  6. @Before:每個(gè)測(cè)試方法前都會(huì)執(zhí)行的方法;
  7. @After:每個(gè)測(cè)試方法前都會(huì)執(zhí)行的方法;
  8. @Ignore:忽略方法;

我們一般使用@Test的注解基本就差不多了,一般@BeforeClass會(huì)用于加載配置,而@AfterClass一般會(huì)用于釋放資源。

上面的代碼有一個(gè)陌生的Assert斷言,這個(gè)東西是干嘛的呢,簡單的可以理解為if條件。斷言里面的值應(yīng)該返回什么樣的值。Assert.assertEquals(num,1)。

這個(gè)你可以理解為if(num==1)System.out.println("ok");但是這個(gè)方法有很多種重載的類

  • assertTrue/False 判定第一個(gè)條件是true還是false
  • assertEquals 接收兩個(gè)參數(shù),第一個(gè)是參數(shù)值,第二個(gè)是希望返回的值
  • assertNotEquals 這個(gè)跟上一個(gè)方法恰好相反,相當(dāng)于if(param!=param2)
  • assertSame/NotSame 判定兩個(gè)變量是否指向同一個(gè)內(nèi)存地址
 
 
 
 
  1. @Test 
  2. public void test2() { 
  3.     List list1 = Arrays.asList("a", "b"); 
  4.     List list2 = Arrays.asList("a", "b"); 
  5.     List list3 = list2; 
  6.  
  7.     Assert.assertEquals(list1,list2);//通過 
  8.     Assert.assertEquals(list3,list2);//通過 
  9.     Assert.assertSame(list3,list2);//通過 
  10.     Assert.assertSame(list1,list2);//不通過,因?yàn)閘ist1和list2分別指向不同的內(nèi)存地址 

web模擬

我們?cè)贎SpringBootTest注解上面加上使用隨機(jī)端口啟動(dòng)

 
 
 
 
  1. @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) 
 
 
 
 
  1. @Autowired 
  2. private TestRestTemplate testRestTemplate; 
  3.  
  4. @Test 
  5. public void test3() throws URISyntaxException { 
  6.     String result = testRestTemplate.getForObject("/demo/test1", String.class); 
  7.     Assert.assertEquals(result,"hello junit test"); 

TestRestTemplate 是不是很熟悉,是的Springboot還為RestTemplate建立了專門的測(cè)試類。

注意:一定要使用隨機(jī)端口啟動(dòng),否則執(zhí)行失敗。但是筆者感覺這個(gè)專門寫個(gè)測(cè)試類很麻煩,還不如直接使用postman測(cè)試,你們覺得呢?

數(shù)據(jù)庫測(cè)試

 
 
 
 
  1. @Test 
  2. @Transactional 
  3. public void test4() { 
  4.     User user = new User(); 
  5.     user.setName("abc"); 
  6.     user.setAge(19); 
  7.     user.setBirthday(new Date()); 
  8.     userJpa.save(user); 
  9.     Assert.assertTrue(user.getId()!=null); 
  10.     Assert.assertNotNull(user.getId()); 

注意:如果不想污染數(shù)據(jù)庫,可以加上@Transactional,執(zhí)行成功之后數(shù)據(jù)庫事務(wù)會(huì)回滾,不會(huì)將數(shù)據(jù)真正插入到數(shù)據(jù)庫中。

idea為我們快速的創(chuàng)建test單元測(cè)試文件提供了快捷方式

選中需要進(jìn)行單元測(cè)試的方法,右鍵-->go to-->Test就會(huì)為我們創(chuàng)建單元測(cè)試文件。

文章已經(jīng)同步更新到 Java實(shí)驗(yàn)室官方站點(diǎn):

https://javawu.com/archives/2808


新聞名稱:這么好用的Java單元測(cè)試工具,你還在猶豫什么?
轉(zhuǎn)載注明:http://www.5511xx.com/article/cccesec.html