public TestOne(String sTestName, TestMethod rTestMethod) { super(sTestName, rTestMethod); }
稍候解释这是为什么?
接下来编写两个个测试方法,这很熟悉: public void testOne() { System.out.PRintln("TestOne.testOne()"); 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; }}