日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JUnit测试框架的使用经验分享

發布時間:2023/12/31 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JUnit测试框架的使用经验分享 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么80%的碼農都做不了架構師?>>> ??

? 

 1、學習Junit框架的使用
可通過以下兩個示例進行學習。
A、Junit使用方法示例1
1)把Junit引入當前項目庫中
新建一個 Java 工程—coolJUnit,打開項目coolJUnit 的屬性頁 -> 選擇“Java Build Path”子選項 -> 點選“Add Library…”按鈕 -> 在彈出的“Add Library”對話框中選擇 JUnit,并在下一頁中選擇版本 Junit 4 后點擊“Finish”按鈕。這樣便把 JUnit 引入到當前項目庫中了。
2)新建單元測試代碼目錄
單元測試代碼是不會出現在最終軟件產品中的,所以最好為單元測試代碼與被測試代碼創建單獨的目錄,并保證測試代碼和被測試代碼使用相同的包名。這樣既保證了代碼的分離,同時還保證了查找的方便。遵照這條原則,在項目 coolJUnit 根目錄下添加一個新目錄 testsrc,并把它加入到項目源代碼目錄中。
3)在工程中添加類
添加類SampleCaculator,類中有兩個方法,分別計算加減法。編譯代碼。
public class SampleCalculator {
//計算兩整數之和
public int add(int augend, int addend){
return augend + addend;
}
//計算兩整數之差
public int subtration(int minuend, int subtrahend){
return minuend - subtrahend;
}
}
4)寫單元測試代碼
為類SampleCalculator添加測試用例。在資源管理器SampleCalculator.java文件處右擊選new>選Junit Test Case(見圖4),Source foler選擇testsrc目錄,點擊next,選擇要測試的方法,這里把add和subtration方法都選上,最后點finish完成。
Junit自動生成測試類SampleCalculatorTest,修改其中的代碼(如下)。
其中assertEquals斷言,用來測試預期目標和實際結果是否相等。
assertEquals( [Sting message], expected, actual )
expected是期望值(通常都是硬編碼的),actual是被測試代碼實際產生的值,message是一個可選的消息,如果提供的話,將會在發生錯誤時報告這個消息。
如想用斷言來比較浮點數(在Java中是類型為float或者double的數),則需指定一個額外的誤差參數。
assertEquals([Sting message], expected, actual, tolerance)
其它斷言參見課本和參考書介紹。測試方法需要按照一定的規范書寫:
1.?測試方法必須使用注解 org.junit.Test 修飾。
2.?測試方法必須使用 public void 修飾,而且不能帶有任何參數。
5)查看運行結果
在測試類上點擊右鍵,在彈出菜單中選擇 Run As JUnit Test。運行結果如下圖,綠色的進度條提示我們,測試運行通過了。

  B、Junit使用方法示例2
   1)在工程中添加類
   類WordDealUtil中的方法wordFormat4DB( )實現的功能見文件注釋。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordDealUtil {
/**
* 將Java對象名稱(每個單詞的頭字母大寫)按照
* 數據庫命名的習慣進行格式化
* 格式化后的數據為小寫字母,并且使用下劃線分割命名單詞
* 例如:employeeInfo 經過格式化之后變為 employee_info
* @param name Java對象名稱
*/
public static String wordFormat4DB(String name){
Pattern p = Pattern.compile("[A-Z]");
Matcher m = p.matcher(name);
StringBuffer strBuffer = new StringBuffer();
while(m.find()){
//將當前匹配子串替換為指定字符串,
//并且將替換后的子串以及其之前到上次匹配子串之后的字符串段添加到一個StringBuffer對象里
m.appendReplacement(strBuffer, "_"+m.group());
}
//將最后一次匹配工作后剩余的字符串添加到一個StringBuffer對象里
return m.appendTail(strBuffer).toString().toLowerCase();
}
}
   2)寫單元測試代碼
import static org.junit.Assert.*;
import org.junit.Test;
public class WordDealUtilTest {
@Test
public void testWordFormat4DB() {
String target = "employeeInfo";
String result = WordDealUtil.wordFormat4DB(target);
assertEquals("employee_info", result);
}
}
   3)進一步完善測試用例
   單元測試的范圍要全面,如對邊界值、正常值、錯誤值的測試。運用所學的測試用例的設計方法,如:等價類劃分法、邊界值分析法,對測試用例進行進一步完善。繼續補充一些對特殊情況的測試:
//測試?null 時的處理情況
@Test public void wordFormat4DBNull(){
String target = null;
String result = WordDealUtil.wordFormat4DB(target);
assertNull(result);
}
//測試空字符串的處理情況
@Test public void wordFormat4DBEmpty(){
String target = "";
String result = WordDealUtil.wordFormat4DB(target);
assertEquals("", result);
}
//測試當首字母大寫時的情況
@Test public void wordFormat4DBegin(){
String target = "EmployeeInfo";
String result = WordDealUtil.wordFormat4DB(target);
assertEquals("employee_info", result);
}
//測試當尾字母為大寫時的情況
@Test public void wordFormat4DBEnd(){
String target = "employeeInfoA";
String result = WordDealUtil.wordFormat4DB(target);
assertEquals("employee_info_a", result);
}
//測試多個相連字母大寫時的情況
@Test public void wordFormat4DBTogether(){
String target = "employeeAInfo";
String result = WordDealUtil.wordFormat4DB(target);
assertEquals("employee_a_info", result);
}
   4)查看分析運行結果,修改錯誤代碼
   再次運行測試。JUnit 運行界面提示我們有兩個測試情況未通過測試(見圖6),當首字母大寫時得到的處理結果與預期的有偏差,造成測試失敗(failure);而當測試對 null 的處理結果時,則直接拋出了異常——測試錯誤(error)。顯然,被測試代碼中并沒有對首字母大寫和 null 這兩種特殊情況進行處理,修改如下:
//修改后的方法wordFormat4DB
public static String wordFormat4DB(String name){
if(name == null){
return null;
}
Pattern p = Pattern.compile("[A-Z]");
Matcher m = p.matcher(name);
StringBuffer sb = new StringBuffer();
while(m.find()){
if(m.start() != 0)
m.appendReplacement(sb, ("_"+m.group()).toLowerCase());
}
return m.appendTail(sb).toString().toLowerCase();
}
  2、使用Junit框架對類Date和類DateUtil進行單元測試。
   只對包含業務邏輯的方法進行測試,包括:
   類Date中的
   isDayValid(int year, int month, int day)
   isMonthValid(int month)
   isYearValid(int year)
   類DateUtil中的
   isLeapYear(int year)
   getDayofYear(Date date)?

本文選自:http://www.spasvo.com/news/html/2014123144207.html

?

轉載于:https://my.oschina.net/spasvo/blog/352138

總結

以上是生活随笔為你收集整理的JUnit测试框架的使用经验分享的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲校园激情 | 欧美性猛交 xxxx| 日韩私人影院 | 日韩成人免费在线 | 无码黑人精品一区二区 | 制服丝袜国产在线 | 一区二区国产欧美 | 中国美女一级片 | 婷婷视频一区 | 一区二区三区在线免费视频 | 美女扒逼 | 国产97色 | 九色视频网 | av自拍网 | 激情九九| 一级黄色大片网站 | 精品国产一区二区三区久久 | 五月综合色婷婷 | 欧美性猛交xxxⅹ富婆 | 国产无遮挡又黄又爽 | 欧美成人黄色小视频 | 欧美亚洲综合久久 | 天堂久久网| 手机在线看a| 亚洲成网站 | 亚洲乱色熟女一区二区三区 | 香蕉网久久 | 欧美无遮挡高潮床戏 | 欧美自拍亚洲 | 国产色91| 欧美性xxxxx 亚洲特黄一级片 | 一本色道综合久久欧美日韩精品 | 精品国产免费一区二区三区 | av老司机久久 | 精品久久网 | youjizz少妇| 哺乳期喷奶水丰满少妇 | av在线不卡网站 | 久久久久久91香蕉国产 | 国产中文字幕乱人伦在线观看 | 久久色在线观看 | 国产91av在线播放 | 国产手机在线视频 | 精品国产乱码久久久人妻 | 少妇献身老头系列 | 日韩亚洲视频 | 欧美精品免费一区二区三区 | 日本αv| 成人免费毛片嘿嘿连载视频 | 日本性爱视频在线观看 | www.99色| 欧美色图一区二区 | 一级做a爱视频 | 日韩久 | 91精品久| 流白浆视频 | 永久免费精品视频 | 亚洲国产日韩a在线播放性色 | 欧美天天| 操大爷影院 | 人人干在线 | 伊人98| 爱爱精品视频 | 久久久精品视频在线观看 | 日本伦理一区二区三区 | 久国产 | freesex性hd公交车上 | 影音先锋中文字幕人妻 | 少妇做爰免费视频播放 | 少妇高潮一区二区三区99欧美 | 日韩精品乱码久久久久久 | 影音先锋色小姐 | 久久无码人妻一区二区三区 | 日韩在线一级 | 天天色综合1 | 国产精品久久久久久在线观看 | 欧美一区三区三区高中清蜜桃 | 色婷婷麻豆 | 啪啪网站免费看 | 处女朱莉 | 麻豆私人影院 | 西比尔在线观看完整视频高清 | 人超碰 | 雪白的扔子视频大全在线观看 | 亚洲天天综合 | 成人黄色动漫在线观看 | wwwav在线播放 | 日本三级中国三级99人妇网站 | 成人app在线| 在线观看国产精品视频 | 国产在线观 | 日韩欧美第一区 | 777片理伦片在线观看 | 欧美激情国产在线 | 欧美一区二区三区久久成人精品 | 免费成人91| 亚洲在线一区 | av黄色国产 | 精品视频一区二区三区四区 |