2008-12-11 142 views
2

當您爲Javolution測試編寫測試時,模式和做什麼以及不該做什麼?我特別想知道:Javolution測試模式,注意事項和注意事項

  • TestCase.execute()不允許拋出異常。如何處理它們?重申爲RuntimeException或存儲在變量中,並在TestCase.validate()或其他東西中聲明?
  • 是否有任何圖形運行程序向您顯示失敗的測試,即在Eclipse中?也許有人寫了一個JUnit-Wrapper,以便我可以使用Eclipse JUnit Runner?

回答

1

javadoc和javolution來源給出了一些例子和設計原理。 另請參閱an article on serverside

Javolution測試只包含一個測試,並且將測試代碼的執行與驗證分隔爲不同的方法execute()和validate()。因此,相同的測試類可以用於迴歸測試和速度測試(其中省略了對validate()的調用)。此外,許多測試的執行是平行的。

這種分離的缺點是:由於在調用validate()之前需要保存執行代碼的結果,因此會消耗更多的內存。 (在tearDown中釋放這些結果可能是一個好主意。) 如果驗證來自與練習不同的類,則可能難以調試失敗。

0

通過使用以下JUnit適配器並在eclipse中運行,您可以獲得某種圖形testrunner。您可以單獨啓動/調試失敗的測試。不幸的是,圖形表示不包括關於實際測試什麼 - 它只是顯示的數字[0],[1]等

@RunWith(Parameterized.class) 公共類JavolutionJUnit4Adapter {

protected final javolution.testing.TestCase test; 

public JavolutionJUnit4Adapter(javolution.testing.TestCase testcase) { 
    this.test = testcase; 
} 

@org.junit.Test 
public void executeTest() throws Exception { 
    enter(REGRESSION); 
    try { 
     new javolution.testing.TestSuite() { 
      @Override 
      public void run() { 
       test(test); 
      } 
     }.run(); 
    } finally { 
     exit(); 
    } 
} 

@Parameters 
public static Collection<javolution.testing.TestCase[]> data() { 
    javolution.testing.TestSuite fp = new WhateverSuiteYouWantToRun(); 
    List<javolution.testing.TestCase> tests = fp.getTestCases(); 
    Collection<javolution.testing.TestCase[]> res = new ArrayList<javolution.testing.TestCase[]>(); 
    for (javolution.testing.TestCase t : tests) { 
     res.add(new javolution.testing.TestCase[] { t }); 
    } 
    return res; 
} 

}