public TestOne(String sTestName, TestMethod rTestMethod) { super(sTestName, rTestMethod); }
稍候解釋這是為什么?
接下來編寫兩個個測試方法,這很熟悉: public void testOne() { System.out. assertTrue("Should be true", false); } public void testTwo() { System.out.println("TestOne.testTwo()"); throw new RuntimeException("Exception"); }
正是缺少反射機制,你需要手動編寫suite方法,并一一調用你編寫的測試方法,這個步驟多多少少有些煩悶。沒辦法了,這是理解J2MEUnit框架的要害了,咱連write once debug anywhere都忍了,還有什么困難不能克服呢?
看一下下面這個例子,希望能幫助你理解上面那段總覺得有些拗口的話。假如你理解了“一個TestCase在運行時,只能捆綁一個TestMethod對象”這句話,那么就理解了J2MEUnit所謂的新機制。千萬不要在一個TestMethod中連續調用多個test方法,這樣一旦某個方法出了問題,那么整個方法會結束而后續的測試將不能執行。一定要老老實實做人,認認真真寫suite(),似乎又回到了剪刀加漿糊的時代。。。[-_-"] public Test suite() { TestSuite aSuite = new TestSuite(); aSuite.addTest(new TestOne("testOne", new TestMethod() { public void run(TestCase tc) {((TestOne) tc).testOne(); } })); aSuite.addTest(new TestOne("testTwo", new TestMethod() { public void run(TestCase tc) {((TestOne) tc).testTwo(); } })); return aSuite; }
編寫測試套件
接下來編寫一個測試套件,其實你可能已經明白了,測試套件不過是一個非凡的TestCase,根據慣例,一般這樣的類叫做TestAll,只需要將以前添加的TestCase中的suite添加給TestAll的suite就可以了。 public class TestAll extends TestCase{ public Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new TestOne().suite()); suite.addTest(new TestTwo().suite()); return suite; }}