• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 深度剖析Android單元測試問題

    發表于:2011-06-30來源:未知作者:領測軟件測試網采編點擊數: 標簽:
    許多人在接觸到 Android單元測試 時,第一反應是 Android單元測試 是不是已經完整集成了JUnit。很遺憾這不是事實。如果你按照JUnit的運行方法,卻不像上面那樣改用JDK,就一定會得到一個異常。 實際上,TestCase這個類用于在Android擔當所有獨特的TestCase的

    許多人在接觸到Android單元測試時,第一反應是Android單元測試是不是已經完整集成了JUnit。很遺憾這不是事實。如果你按照JUnit的運行方法,卻不像上面那樣改用JDK,就一定會得到一個異常。

    實際上,TestCase這個類用于在Android擔當所有獨特的TestCase的基類的作用,它是一個Abstract Class。Android單元測試類繼承關系圖如下所示:

    
    
    1. #  
      • # An unexpected error has been detected by Java Runtime Environment:   
        • #  
          • # Internal Error (classFileParser.cpp:2924), pid=4900tid=4476   
            • #Error: ShouldNotReachHere()   
              • #   
                • Java VM: Java HotSpot(TM) Client VM (10.0-b19 mixed mode windows-x86)   
                  • # An error report file with more information is saved as:   
                    • # E:\Mydoc\EclipseWorkspace\TestAndroid\hs_err_pid4900.log   
                      • #   
                        • # If you would like to submit a bug report, please visit:   
                          • # http://java.sun.com/webapps/bugreport/crash.jsp   
                            • #  

    之所以有那么多XXXTestCase主要是為了簡化工作。例如當你想對一個訪問數據庫的功能進行測試時,首先需要自己啟動并初始化數據庫。在這里是類似的,如果你想測試一個Activity。

    首先要啟動它。而ActivityTestCase就會自動幫你做完這些事情。而ActivityUnitTestCase會更注重測試的獨立性,它會讓測試與Android單元測試的聯系降到最低。其余的類可以查看相關的Javadoc來按需挑選。要編寫測試,就是找到合適的XXXTestCase作為基類來繼承,并且編寫自己的測試方法。

    很明顯的,最簡單的編寫測試的方法就是繼承Android單元測試寫一個自己的TestCase。然后為自己的一組TestCase寫一個Activity界面,由界面控制TestCase的啟動,運行和結果報告。

    但是,你很快會發現,為何要給測試寫一個界面呢?這太詭異了。這時就需要一種技術,它可以利用命令行(Shell)來啟動一組測試,并且通過命令行的形式給出結果。這就是所謂的Instrumentation。

    在Java下做單元測試必然用到JUnit。這里說的JUnit是指從Apache基金會下載junit.jar里提供的一系列單元測試功能。這些功能顯然是運行在JDK之上的。在Android下已經沒有了JDK。

    自然也無法運行JUnit。但是這并不妨礙我們利用JUnit編寫單元測試。只不過在運行單元測試時,一定要用JDK來運行,利用java命令來啟動JUnit的某個Runner。如果是用Eclipse的話,可以在Run Configuration里新建一個JUnit。但是一定要記得在Classpath選項卡里將Bootstrap Entries中的Android Library改成JRE,并且添加junit.jar。

    這樣,在啟動程序的時候就會先啟動一個Application,然后在此Application運行過程中根據情況加載相應的Activity,而Activity是需要一個界面的。但是Instrumentation并不是這樣的。你可以將Instrumentation理解為一種沒有圖形界面的,具有啟動能力的,用于監控其他類(用Target Package聲明)的工具類。任何想成為Instrumentation的類必須繼承

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>