您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
用JUnit測試Java類
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/2/26 11:54:58 ] 推薦標(biāo)簽:Java類 JUnit測試 單元測試

七、再論TestSuite.suite()方法(Back to the TestCase.suite() Method)

現(xiàn)在我們對如何指定TestCase和TestSuite要運(yùn)行的測試,已經(jīng)很清楚了,讓我們再回過頭來看看TestRunner需要的TestCase.suite()方法。這兒有一個(gè)TestCase.suite()方法的例子,它添加一個(gè)TestCase類的一個(gè)測試方法,另一個(gè)TestCase類的所有測試方法,以及一個(gè)子TestSuite所有層次的測試方法。

程序列表4 (a suite method demonstrating many different ways of specifying tests):

public static suite() {
  TestSuite globalTestSuite = new TestSuite();

  TestCase addToCartTestCase = new ShopCartTest("testAddToCart");
  globalTestSuite.addTest(addToCartTestCase);

  TestCase checkOutTestCase = new ShopCartTest("testCheckOut");
  globalTestSuite.addTest(checkOutTestCase);

  TestSuite calcTestSuite = new TestSuite(CalculatorTest.class);
  globalTestSuite.addTest(calcTestSuite);

  TestSuite fileModuleTestSuite = new TestSuite();
  fileModuleTestSuite.addTest(new ImportExportTest("testImport"));
  fileModuleTestSuite.addTest(new TestSuite(SaveFileTest.class));
  globalTestSuite.addTest(fileModuleTestSuite);

  return globalTestSuite;
}

好,你已經(jīng)了解了如何向TestRunner指定測試的不同方法,你應(yīng)該開始這些測試了。如果你在CalculatorTest中添加了一個(gè)suite方法,把它刪掉,因?yàn)樵谙乱恍」?jié)中TestRunner將運(yùn)行CalculatorTest類中所有的testXxx方法。suite方法在你要做大量測試時(shí)非常重要。
八、運(yùn)行測試(Running the Test)

輸入javac -classpath ~/packages/junit3.8.1/junit.jar *.java編譯CalculatorTest類。用你機(jī)器上junit.jar文件的路徑代替“~/packages/junit3.8.1/junit.jar”。輸入java -classpath ~/packages/junit3.8.1/junit.jar:. junit.textui.TestRunner CalculatorTest運(yùn)行測試。這兒的junit.jar路徑也需要替換。為了避免每次都要在命令行指定classpath,把JUnit庫和當(dāng)前目錄都加到classpath中。Linux下你可以在bash shell中用這兩個(gè)命令:
CLASSPATH=~/packages/junit3.8.1/junit.jar:.
export CLASSPATH

注意把“~/packages/junit3.8.1/junit.jar”替換為junit.jar文件的正確路徑,而且不要忘了后面的冒號和點(diǎn)。Windows下設(shè)置環(huán)境變量的命令是"set",你可以用它把CLASSPATH設(shè)置為類似的值,除了正斜杠改成反斜杠。把“.”加入classpath是為了讓JUnit TestRunner能找到當(dāng)前目錄下的CalculatorTest。對本文來說,你應(yīng)該使用“.”而不是當(dāng)前路徑的硬編碼,因?yàn)槟氵要練習(xí)其它的例子,這樣無論你在做那個(gè)例子,你都訪問和執(zhí)行新的當(dāng)前目錄下的類。下面假定你已經(jīng)正確設(shè)置了你的classpath。

運(yùn)行CalculatorTest中的測試后,你應(yīng)該看到下面的輸出:
...
Time: 0.008

OK (3 tests)

一串點(diǎn)表示JUnit正在運(yùn)行,JUnit還在統(tǒng)計(jì)行顯示通過或失敗的測試數(shù)目。如果某個(gè)測試失敗了,顯示結(jié)果可能不是上面那樣,而是:

..F
Time: 0.01
There was 1 failure:
1) testAddition(Test) "expected:<5> but was:<4>"

FAILURES!!!
Tests run: 2,  Failures: 1,  Errors: 0

九、其它TestRunner類和執(zhí)行方法(Different TestRunner Classes and Ways of Executing Them)

有好幾個(gè)TestRunner你可以使用:text、AWT和Swing。對應(yīng)的類分別是junit.textui.TestRunner、junit.awtui.TestRunner和junit.swingui.TestRunner。運(yùn)行它們的命令類似:
java junit.awtui.TestRunner CalculatorTest

--或者--

java junit.swingui.TestRunner CalculatorTest

AWT和Swing版本的TestRunner需要在Windows、OS X或X11等圖形環(huán)境中使用。它們用交互的圖形格式顯示運(yùn)行結(jié)果。text UI是常用的,因?yàn)闇y試一般都用批處理模式運(yùn)行,這時(shí)交互是一種缺點(diǎn)。

當(dāng)你調(diào)用TestRunner,把測試類的名字傳給它時(shí),TestRunner加載你的類,使用reflection找到所有以“test”開始的方法。如果你不想在命令行用java調(diào)用TestRunner類,你還有另一重辦法:直接調(diào)用包含test suite的類的main方法。

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