您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
基于JUnit使用Feed4JUnit實(shí)現(xiàn)數(shù)據(jù)與代碼分離
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/12 13:40:26 ] 推薦標(biāo)簽:

  經(jīng)常,在應(yīng)用程序的業(yè)務(wù)邏輯中存在大量的這樣的接口:他們接受不同的輸入,然后進(jìn)行或驗(yàn)證,或處理,進(jìn)而完成相同的流程。比如網(wǎng)站的登錄入口,用戶名和密碼都有長(zhǎng)度的限制,同時(shí)也具有是否允許特殊字符的限制等,所以在我們進(jìn)行其單元測(cè)試的過程中,根據(jù)不同長(zhǎng)度的用戶名和密碼,以及不同的字符組合,只需要提供相同的測(cè)試代碼結(jié)構(gòu),能完成測(cè)試,不同的僅僅測(cè)試數(shù)據(jù)與期望值,但是因?yàn)槊恳粋(gè)測(cè)試方法中的輸入?yún)?shù)不同,我們必須為每一個(gè)輸入組編寫單獨(dú)的測(cè)試用例,從而產(chǎn)生大量冗余代碼,十分不便于維護(hù)。

  基于以上場(chǎng)景,JUnit 4 提供了參數(shù)化的特性,從而能夠?qū)崿F(xiàn)不同數(shù)據(jù)輸入對(duì)相同測(cè)試代碼的測(cè)試,如清單 1 所示:

  清單 1. JUnit 4 參數(shù)化測(cè)試代碼示例

    package sample.test;

import static org.junit.Assert.assertEquals;

import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

import sample.code.UserAccess;

/*
 * JUnit - Parameter test sample
 */
@RunWith(Parameterized.class)
public class JunitSample {

 private String user;
 private String pw;
 private boolean expected;

 @Parameters
 public static Collection dataGenerater() {
  return Arrays.asList(new Object[][] {
    { "user01", "123456", true },
    { "helloworld", "123456", false },
    { "david", "re*ads", false },
    { "goodone", "onegood", true } });
 }

 public JunitSample(String user, String pw, boolean expected) {
  this.user = user;
  this.pw = pw;
  this.expected = expected;
 }

 @Test
 public void testAccessCheck() {
  assertEquals(expected, UserAccess.accessCheck(user, pw));
 }
}

  通過以上示例代碼可以看出,JUnit 4 通過使用一個(gè)標(biāo)記 @Parameters 注釋的返回類型為 Collection 的靜態(tài)方法產(chǎn)生數(shù)據(jù),測(cè)試數(shù)據(jù)通過變量傳遞給測(cè)試方法,從而完成多數(shù)據(jù)輸入的測(cè)試。但是隨著業(yè)務(wù)的需要,測(cè)試人員需要經(jīng)常增加測(cè)試數(shù)據(jù)與修改現(xiàn)有測(cè)試數(shù)據(jù),JUnit 4 提供的硬編碼方式已經(jīng)愈顯笨重和不便,數(shù)據(jù)與代碼分離顯得尤為重要。

  幸好,本文所述的 Feed4JUnit 良好的解決了數(shù)據(jù)與代碼分離的問題,F(xiàn)eed4JUnit 是 JUnit 測(cè)試框架的擴(kuò)展,它通過操作來自于文件以及不同的數(shù)據(jù)源的測(cè)試數(shù)據(jù),使您的單元測(cè)試變得更容易編寫與維護(hù)。

  本文將通過示例向您展示 Feed4JUnit 的安裝以及測(cè)試代碼與數(shù)據(jù)分離的實(shí)現(xiàn),請(qǐng)注意本文的示例代碼全部基于針對(duì)如下一個(gè)十分簡(jiǎn)單用戶登錄檢驗(yàn)的類,并且假定您正在使用 Eclipse 作為您的 IDE,請(qǐng)看清單 2 類代碼:

  清單 2. 實(shí)例類

    package sample.code;

public class UserAccess {
 // simple validation for user name and password
 public static boolean accessCheck(String userName, String password) {
  if (userName.length() <= 4 || userName.length() > 8)
   return false;
  if (password.length() <= 4 || password.length() > 8)
   return false;
  if (userName.contains("@"))
   return false;
  if (password.contains("*"))
   return false;
  return true;
 }
}

  Feed4JUnit 的下載及安裝

  1. Feed4JUnit 是開源的測(cè)試組件,您可以從如下鏈接下載新版本:

  http://sourceforge.net/projects/feed4junit/files/

上一頁1234下一頁
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd