亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit單元測試框架的使用
作者:java_阿杰 發布時間:[ 2016/10/9 14:04:50 ] 推薦標簽:單元測試 Junit

  我們寫單元測試,一般都會用到一個或多個單元測試框架,在這里,我們介紹一下JUnit4這個測試框架。這是Java界用的廣泛,也是基礎的一個框架,其他的很多框架,包括我們后面會看到的Robolectric,都是基于或兼容JUnit4的。然而首先要解決的問題是。。。
  為什么要使用單元測試框架呢
  或者換句話說,單元測試框架能夠為我們做什么呢?從基本的開始說起,假如我們有這樣一個類:
public class Calculator {
public int add(int one, int another) {
// 為了簡單起見,暫不考慮溢出等情況。
return one + another;
}
public int multiply(int one, int another) {
// 為了簡單起見,暫不考慮溢出等情況。
return one * another;
}
}
  如果不用單元測試框架的話,我們要怎么寫測試代碼呢?我們恐怕得寫出下面這樣的代碼:
public class CalculatorTest {
public static void main(String[] args) {
Calculator calculator = new Calculator();
int sum = calculator.add(1, 2);
if(sum == 3) {
System.out.println("add() works!")
} else {
System.out.println("add() does not works!")
}
int product = calculator.multiply(2, 4);
if (product == 8) {
System.out.println("multiply() works!")
} else {
System.out.println("multiply() does not works!")
}
}
}
  然后我們再通過某種方式,比如命令行或IDE,運行這個 CalculatorTest 的 main 方法,在看著terminal的輸出,才知道測試是通過還是失敗。想想一下,如果我們有很多的類,每個類都有很多方法,那么要寫一堆這樣的代碼,每個類對于一個含有 main 方法的test類,同時 main 方法里面會有一堆代碼。這樣既寫起來痛苦,跑起來更痛苦,比如說,你怎么樣一次性跑所有的測試類呢?所以,一個測試框架為我們做的基本的事情,是允許我們按照某種更簡單的方式寫測試代碼,把每一個測試單元寫在一個測試方法里面,然后它會自動找出所有的測試方法,并且根據你的需要,運行所有的測試方法,或者是運行單個測試方法,或者是運行部分測試方法等等。
  對于上面的 Calculator 例子,如果使用Junit的話,我們可以按照如下的方式寫測試代碼:
public class CalculatorTest {
@Test
public void testAdd() throws Exception {
Calculator calculator = new Calculator();
int sum = calculator.add(1, 2);
Assert.assertEquals(3, sum);
}
@Test
public void testMultiply() throws Exception {
Calculator calculator = new Calculator();
int product = calculator.multiply(2, 4);
Assert.assertEquals(8, product);
}
}
  每一個被測試的方法( add(), multiply() ),寫一個對應的測試方法( testAdd(), testMultiply() )。那JUnit怎么知道那些是測試方法,哪些不是呢?這個是通過前面的 @Test 注解來標志的,只要有這個注解,JUnit4會當做是一個測試方法,方法名其實是可以隨意起的。當然,名字還是應該起的更有可讀性一點,讓人一看知道,這個測試方法是測試了被測的類的那個方法,或者是測試了那個功能點等等。
  除了幫我們找出所有的測試方法,并且方便運行意外,單元測試框架還幫我們做了其他事情。在 這個系列的第一篇文章 中我們提到,一個測試方法主要包括三個部分:
  1、setup
  2、執行操作
  3、驗證結果
  而一個單元測試框架,可以讓我們更方便的寫上面的每一步的代碼,尤其是第一步和第三部。比如說,在上面的 CalculatorTest 中, testAdd() 和 testMultiply() 都有相同的setup: Calculator calculator = new Calculator(); ,如果 Calculator 還有其他的方法的話,這行代碼得重復更多次,這種duplication是沒必要的。絕大多數單元測試框架考慮到了這一點,它們知道一個測試類的很多測試方法可能需要相同的setup,所以為我們提供了便捷方法。對于JUnit4,是通過 @Before 來實現的:
public class CalculatorTest {
Calculator mCalculator;
@Before
public void setup() {
mCalculator = new Calculator();
}
@Test
public void testAdd() throws Exception {
int sum = mCalculator.add(1, 2);
assertEquals(3, sum);  //為了簡潔,往往會static import Assert里面的所有方法。
}
@Test
public void testMultiply() throws Exception {
int product = mCalculator.multiply(2, 4);
assertEquals(8, product);
}
}

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 一级黄色片免费播放 | 色综合欧美 | 在线播放成人毛片免费视 | 午夜小视频男女在线观看 | 特级黄色网 | 狠狠色狠狠色综合日日小蛇 | 欧美日韩v| 黄色免费网址在线观看 | 亚洲成人黄色片 | a级毛片免费观看在线播放 a级毛片免费完整视频 | 91亚洲免费视频 | 欧美性猛交xxx黑人猛交 | 色黄网站aaaaaa级毛片 | 久久综合欧美成人 | 理伦片免费理论片 | 黄网站色在线视频免费观看 | 99视频精品全部免费观看 | 一区二区三区精品视频 | 欧美一级三级在线观看 | 天天曰天天干天天操 | 日本大黄视频 | 日本高清一区二区三区不卡免费 | 日本不卡免费在线 | 国产亚洲新品一区二区 | 天天射天天 | 欧美成人二区 | 羞视频在线观看 | 在线观看免费视频a | 中文字幕免费在线视频 | 伊人网在线免费观看 | 高清中文字幕在线 | 日本免费专区 | 成人永久免费福利视频网站 | 人人人人凹人人爽人人澡 | 欧美一区二区亚洲 | 亚洲狼人香蕉香蕉在线28 | 青青草成人在线 | 亚洲天堂久久精品成人 | 精品日韩欧美 | 成人免费网址在线 | 欧美日韩有码 |