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