国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

使用J2MEUnit測(cè)試J2ME程序

2019-11-18 16:10:36
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

   JUnit是一個(gè)優(yōu)秀的用于單元測(cè)試的框架,在j2se,j2ee的開(kāi)發(fā)過(guò)程被廣泛使用,它使得代碼的質(zhì)量得到更好的監(jiān)控和維護(hù)。然而對(duì)于j2me平臺(tái)一切就不是如此簡(jiǎn)單了,由于手持設(shè)備需要更多的考慮性能問(wèn)題,j2me平臺(tái)并沒(méi)有提供反射(Reflectiong)的API,因此JUnit的很多功能無(wú)法在j2me上實(shí)現(xiàn),程序員也就無(wú)法在j2me平臺(tái)上使用JUnit進(jìn)行單元測(cè)試。本文將介紹一個(gè)能對(duì)j2me應(yīng)用程序進(jìn)行單元測(cè)試的工具:J2MEUnit。j2meunit是一個(gè)基于JUnit實(shí)現(xiàn)的針對(duì)j2me平臺(tái)的單元測(cè)試框架。詳細(xì)介紹請(qǐng)看:http://j2meunit.sourceforge.net/。
 
   運(yùn)行環(huán)境
  本文的示例程序的運(yùn)行和測(cè)試都是在eclipse3.1下進(jìn)行,并需要到如下網(wǎng)址下載J2MEUnit的最新版本:
     http://j2meunit.sourceforge.net/
下載后如為rar/zip壓縮包,須先解壓。

   HelloWorld 實(shí)例
  本文將通過(guò)一個(gè)HelloWorld的例子來(lái)介紹J2MEUnit的基本使用方法。首先在eclipse中新建一個(gè)J2ME Midlet Suite工程。File->New->PRoject->J2ME Midlet Suite,取名為HelloMidlet。
   此工程包括兩個(gè)類(lèi):HelloWorld.java和HelloWorldMidlet.java。首先在工程底下新建包名hello,然后在hello包底下創(chuàng)建一個(gè)新類(lèi):HelloWorld.java,和一個(gè)新的J2ME Midlet:HelloWorldMidlet.java。代碼如下:

hello.HelloWorld.java
   
以下是引用片段:
    package hello;
    public class HelloWorld {
       public HelloWorld(){
       }
   
       public String sayHello(){
        return "Hello World";
       }
    }

hello.HelloWorldMidlet.java
    
   

以下是引用片段:
package hello;
    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Display;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    public class HelloWorldMidlet extends MIDlet {
     private Display display;
     private Alert alert;
     private HelloWorld hello;
 
     public HelloWorldMidlet(){
      display = Display.getDisplay(this);
      hello = new HelloWorld();
     }
     protected void startApp() throws MIDletStateChangeException {
      String s = hello.sayHello();
      alert = new Alert("Hello",s,null,AlertType.INFO);
      alert.setTimeout(Alert.FOREVER);
      display.setCurrent(alert);
     }
     protected void pauseApp() {
     }
     protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
     }
     }


 

程序的功能就是在一個(gè)Alert中輸出“HelloWorld”的字符串,代碼十分簡(jiǎn)單,在此不做過(guò)多論述。編譯后,可以運(yùn)行程序,如果運(yùn)行后能在Alert中看到“HelloWorld”,說(shuō)明程序運(yùn)行正常。接著開(kāi)始寫(xiě)測(cè)試代碼。

     編寫(xiě)測(cè)試類(lèi)
     寫(xiě)測(cè)試文件時(shí)需要用到J2MEUnit的類(lèi)庫(kù),首先需要將類(lèi)庫(kù)加入到工程的build path中。右擊工程名->properties->Java Build Path->Libraries, Add External JARs,選擇剛才下載的文件,然后確定。 
     現(xiàn)在需要對(duì)HelloWorld.java中的sayHello()方法進(jìn)行測(cè)試。在工程目錄底下新建一個(gè)包名test,然后新建一個(gè)名為T(mén)estHelloWorld.java的類(lèi),主要對(duì)HelloWorld中的sayHello()方法進(jìn)行測(cè)試。雖然J2MEUnit現(xiàn)在不支持反射機(jī)制,但是仍然按照J(rèn)Unit的規(guī)范命名,以便日后的代碼移植。TestHelloWorld代碼如下所示:
   
TestHelloWorld.java
     
     

以下是引用片段:
package test;
     
     import j2meunit.framework.Test;
     import j2meunit.framework.TestCase;
     import j2meunit.framework.TestMethod;
     import j2meunit.framework.TestSuite;
     import hello.HelloWorld;
     public class TestHelloWorld extends TestCase {
     private HelloWorld hello;
 
     public TestHelloWorld(){}
 
           /**
     * 構(gòu)造函數(shù)
     * @param sTestName    測(cè)試方法的名稱(chēng)
     * @param rTestMethod  測(cè)試的方法
     */
     public TestHelloWorld(String sTestName,TestMethod rTestMethod){
       super(sTestName,rTestMethod);
     }
     protected void setUp() throws Exception {
      super.setUp();
      hello = new HelloWorld();
     }
 
     protected void tearDown() throws Exception {
      super.tearDown();
     }
     public Test suite() {
      TestSuite aSuite = new TestSuite();
  
      aSuite.addTest(new TestHelloWorld("testSayHello",new TestMethod(){
       public void run(TestCase tc){
       ((TestHelloWorld) tc).testSayHello();
       }
      }));
  
      return aSuite;
     }
 
           /**
            * 測(cè)試sayHello()方法
            *
            */
     public void testSayHello(){
      String s = hello.sayHello();
      assertEquals("Hello World!",s);
     }
      }


   

    首先測(cè)試類(lèi)必須從j2meunit.framework.TestCase繼承。只是對(duì)HelloWorld類(lèi)從測(cè)試,因此包含一個(gè)HelloWorld的對(duì)象。接著,重載了兩個(gè)構(gòu)造函數(shù)。同樣,重寫(xiě)了TestCase的兩個(gè)方法:setUp()和tearDown()。在setUp()中對(duì)hello進(jìn)行了初始化。由于J2MEUnit不支持反射機(jī)制,因此我們必須自己寫(xiě)suite(),創(chuàng)建一個(gè)TestSuite的對(duì)象,然后加入要進(jìn)行的測(cè)試方法。最后就是寫(xiě)測(cè)試sayHello()的方法,我們對(duì)sayHello()的返回值進(jìn)行測(cè)試,看與預(yù)期結(jié)果是否匹配。
    這是一個(gè)測(cè)試HelloWorld的類(lèi),我們還要寫(xiě)一個(gè)TestAll的類(lèi)要運(yùn)行測(cè)試過(guò)程。在test包下創(chuàng)建一個(gè)新類(lèi),取名TestAll,同樣,也是繼承自j2meunit.framework.TestCase,代碼如下:

TestAll.java
    
   

以下是引用片段:
 package test;
    import j2meunit.framework.Test;
    import j2meunit.framework.TestCase;
    import j2meunit.framework.TestSuite;
    import j2meunit.textui.TestRunner;
    public class TestAll extends TestCase {
    public TestAll(){
          super("null");
    }
 
    public TestAll(String name){
    super(name);
    }
   
         /**
    * @param args
    */
    public static void main(String[] args) {
    String[] runnerArgs = new String[]{"test.TestHelloWorld"};
    TestRunner.main(runnerArgs);
    }
    public Test suite(){
    TestSuite aSuite = new TestSuite();
  
    aSuite.addTest(new TestHelloWorld().suite());
  
    return aSuite;
    }
     }

 

  其中的main()方法是運(yùn)行J2MEUnit的runner的,注意,其中的runnerArgs,是包含了各個(gè)測(cè)試類(lèi)的名稱(chēng)的字符串?dāng)?shù)組,并且類(lèi)名一定要帶上完整的包名,否則運(yùn)行會(huì)失敗。

運(yùn)行測(cè)試
    好了,現(xiàn)在可以運(yùn)行我們的測(cè)試了。右擊TestAll,Run As..->Java application。運(yùn)行結(jié)束,可以在console窗口中看到如下輸出:
  
 

以下是引用片段:
TestRunner.main()
    .F
    Time: 0ms
    FAILURES!!!
    Test Results:
    Run: 1 Failures: 1 Errors: 0
    There was 1 failure:
    1) testSayHello(test.TestHelloWorld) "eXPected:〈Hello World!〉 but was:〈Hello World〉"


  

  因?yàn)槲覀冊(cè)跍y(cè)試時(shí),希望得到的結(jié)果是“Hello World!”,而實(shí)際返回結(jié)果是“Hello World”,所以會(huì)得到一個(gè)Failure。現(xiàn)在把“Hello World!”改成“Hello World”,再次運(yùn)行,則會(huì)輸出測(cè)試通過(guò)。Try it!

總結(jié)
   這就是在J2ME平臺(tái)上使用J2MEUnit進(jìn)行單元測(cè)試的簡(jiǎn)單過(guò)程,更多的使用和API請(qǐng)參見(jiàn)J2MEUnit的文檔。

 

(出處:http://www.survivalescaperooms.com)



發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 英德市| 金坛市| 西峡县| 资源县| 四平市| 连云港市| 平凉市| 梨树县| 高清| 东乡| 天祝| 都江堰市| 兴文县| 哈密市| 抚州市| 涿州市| 田阳县| 调兵山市| 台中市| 常宁市| 涡阳县| 阿拉善右旗| 北安市| 洪湖市| 花莲市| 洛宁县| 靖西县| 岳阳市| 阿拉善盟| 溆浦县| 普宁市| 锡林郭勒盟| 乌拉特后旗| 梁山县| 卢湾区| 利津县| 建水县| 图木舒克市| 阳信县| 衡水市| 永年县|