麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

全面認識JUnit 4的新特征

2019-11-18 13:52:26
字體:
來源:轉載
供稿:網友
提要 本文將向你介紹如何實現從JUnit 3.8向JUnit 4的遷移。同時,還討論JUnit 4中的一些新特征,非凡包括對注解的使用;最后,簡要介紹這個新版本的IDE集成現狀。

  一、 引言

  在本文開始,我將假定,你已經了解由Kent Beck和Erich Gamma發明的這個java單元測試框架并因此而略過必要的簡介。所以,我將集中分析從JUnit 3.8到最新版本-JUnit 4的遷移過程以及其在IDE和Ant中的集成。

  JUnit 4是一種與其之前的版本完全不同的API,它根據Java 5.0中的新特征(注解,靜態導入等)構建而成。如你所見,JUnit 4更簡單、更豐富和更易于使用,而且它引入了更為靈活的初始化和清理工作,還有限時的和參數化測試用例。

  代碼實例最能說明問題。因此,在本文中,我將使用一個例子來展示不同的測試用例:一個計算器。該示例計算器很簡單,效率并不高,甚至還有一些錯誤;它僅僅操作整數,并且把結果存儲在一個靜態變量中。Substract方法并不返回一個有效的結果,而且也沒有實現乘法運算,而且看上去在squareRoot方法中還存在一個錯誤:無限循環。這些錯誤將幫助說明使用JUnit 4進行測試的有效性。你可以打開和關閉這個計算器,而且你可以清除這些結果。下面是其實現代碼:

package calc;
public class Calculator {
 PRivate static int result; //存儲結果的靜態變量
 public void add(int n) {
  result = result + n;
 }
 public void substract(int n) {
  result = result - 1; //錯誤:應該是"result = result - n"
 }
 public void multiply(int n) {} //還沒實現
 public void divide(int n) {
  result = result / n;
 }
 public void square(int n) {
  result = n * n;
 }
 public void squareRoot(int n) {
  for (; ;) ; //錯誤:無限循環
 }
 public void clear() { //清除結果
  result = 0;
 }
 public void switchOn() { //打開屏幕,顯示"hello",并報警
  result = 0; //實現其它的計算器功能
 }
 public void switchOff() { } //顯示"bye bye",報警,并關閉屏幕
 public int getResult() {
  return result;
 }
}
  二、 遷移一個測試類

  現在,我將把一個已經使用JUnit 3.8編寫成的簡單的測試類遷移到JUnit 4。這個類有一些缺陷:它沒有測試所有的業務方法,而且看上去在testDivide方法中還存在一個錯誤(8/2不等于5)。因為還沒有實現乘法運算功能,所以對其測試將被忽略。

  下面,我們把兩個版本的框架之間的差別以粗體顯示出現于表格1中。

  表格1.分別以JUnit 3.8和JUnit 4實現的CaculatorTest。

  JUnit 3.8

package junit3;
import calc.Calculator;
import junit.framework.TestCase;
public class CalculatorTest extends TestCase {
 private static Calculator calculator = new Calculator();
 @Override protected void setUp() { calculator.clear(); }
 public void testAdd() {
  calculator.add(1);
  calculator.add(1);
  assertEquals(calculator.getResult(), 2);
 }
 public void testSuBTract() {
  calculator.add(10);
  calculator.subtract(2);
  assertEquals(calculator.getResult(), 8);
 }
 public void testDivide() {
  calculator.add(8);
  calculator.divide(2);
  assert calculator.getResult() == 5;
 }
 public void testDivideByZero() {
  try {
   calculator.divide(0);
   fail();
  }
  catch (ArithmeticException e) { }
 }
 public void notReadyYetTestMultiply() {
  calculator.add(10);
  calculator.multiply(10);
  assertEquals(calculator.getResult(), 100);
 }
}
  JUnit 4



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲特黄a级毛片在线播放 久久久入口 | 成人做爰高潮片免费视频美国 | 亚洲最大的成人网 | 久久看免费视频 | 一本一道久久久a久久久精品91 | 男女一边摸一边做羞羞视频免费 | 色999久久久精品人人澡69 | 欧美a在线观看 | 国产一国产一级毛片视频 | 国内精品免费一区二区2001 | 日本人乱人乱亲乱色视频观看 | 色诱亚洲精品久久久久久 | 国产精品视频一区二区三区四 | 欧美激情性色生活片在线观看 | 亚洲成人高清电影 | 国产一区国产二区在线观看 | 久久国产28| 91精品国产91久久久久久 | 99精品视频在线免费观看 | 国产九色视频在线观看 | 久久久一区二区精品 | 日本在线观看视频网站 | 日韩美香港a一级毛片 | 午夜激情视频网站 | 国产做爰全免费的视频黑人 | 久久精品久久精品国产大片 | 国产69精品久久99不卡免费版 | 高清视频一区二区 | 日产精品久久久一区二区福利 | 亚洲一区在线免费视频 | 久久久一区二区精品 | 亚洲第一成人在线观看 | 成人午夜视频在线观看免费 | 国产1区2区3区中文字幕 | 毛片免费一区二区三区 | 久久精品中文字幕一区二区 | 久久思思爱 | 午夜精品成人 | 午夜国产精品成人 | 欧美大电影免费观看 | 免费国产精品视频 |