<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                因為測試任務是個很復雜的過程,所以要單獨拿出來講,里面還涉及了result_reporter的內容。所以這是一個大塊。首先把斷點打在CtsTest的run方法中,刪除其他斷點,重新啟動debug模式: ![](https://box.kancloud.cn/2016-01-09_56911dcfbf684.jpg) 首先會調用checkFields檢查一下命令行參數。然后生成plan里的包名信息。(要理解plan的意思,plan就是cts目錄下plan文件下的xml文件,它里面配置的entry代表一個測試項,一個測試項里又包含多個測試的case)。本程序執行的是Signature計劃,我們就來看看這個xml文件中的內容。 ![](https://box.kancloud.cn/2016-01-09_56911dd03391d.jpg) ~~~ <?xml version="1.0" encoding="UTF-8"?> <TestPlan version="1.0"> <Entry uri="android.tests.sigtest"/> </TestPlan> ~~~ 里面就包含一個測試項。再通過這個去testcases目錄去找這個測試項的配置文件: ![](https://box.kancloud.cn/2016-01-09_56911dd06b342.jpg) 思考一個問題,我們是如何根據Entry的配置找到testcases下的SignatureTest.xml文件的。要理解通過 ~~~ <Entry uri="android.tests.sigtest"/> ~~~ 找測試項,并不是說這個測試項的xml名為android.tests.sigtest,而是你要打開xml文件去里面找一個叫appNameSpace屬性名,這個名稱才是Entry配置時參照的內容,這個時候我們打開SignatureTest.xml,來驗證一下是否相同: ~~~ <?xml version="1.0" encoding="UTF-8"?> <TestPackage AndroidFramework="Android 1.0" appNameSpace="android.tests.sigtest" appPackageName="android.tests.sigtest" jarPath="" name="SignatureTest" runner=".InstrumentationRunner" signatureCheck="true" targetBinaryName="" targetNameSpace="" version="1.0"> <TestSuite name="android"> <TestSuite name="tests"> <TestSuite name="sigtest"> <TestCase name="SignatureTest"> <Test name="testSignature"/> </TestCase> </TestSuite> </TestSuite> </TestSuite> </TestPackage> ~~~ 很巧,剛好一樣,一會我們會在程序的debug過程中,驗證這一點。再回到程序中。 檢查完參數后,就要根據plan獲取測試項: ![](https://box.kancloud.cn/2016-01-09_56911dd0a8889.jpg) 進入buildTestToRun方法中: ![](https://box.kancloud.cn/2016-01-09_56911dd111d14.jpg) 該方法中會先調用createTestCaseRepo得到testcases所有的測試對象(一個xml文件代表一個測試對象)。 ![](https://box.kancloud.cn/2016-01-09_56911dd1642ff.jpg) 如上,new一個TestPackageRepo對象,參數為File對象(指向testcases目錄)和boolean值。進入TestPackageRepo對象的構造方法,看其如何獲得xml文件的信息的。 ![](https://box.kancloud.cn/2016-01-09_56911dd19a2c5.jpg) 直接看parse()方法 ![](https://box.kancloud.cn/2016-01-09_56911dd1c6316.jpg) parse方法中,首先獲得testcases目錄中所有的xml文件。查看Variables一欄中xmlFiles對象。有80個元素,說明testcases目錄下有81個xml文件。 ![](https://box.kancloud.cn/2016-01-09_56911dd1eda17.jpg) 然后parse方法會逐個遍歷這些xml文件。轉到parseTestFromXml(xmlFile)方法中: ![](https://box.kancloud.cn/2016-01-09_56911dd22280b.jpg) 先創建一個TestPackageXmlParser對象,該對象繼承于AbstractXmlParser,通過SAX的方式解析xml文件。有關SAX如何解析xml文件的內容我就不多闡述了。parser.parse(createStreamFromFile(xmlFile));按F5,調用的是TestPackageHandler類中的startElement方法。 ![](https://box.kancloud.cn/2016-01-09_56911dd292b64.jpg) 該方法執行完成后,xml文件里的信息都讀到了TestPackageDef對象中了。 ![](https://box.kancloud.cn/2016-01-09_56911dd32f8a0.jpg) 此時我們來看經過TestPackageXmlParser.parse方法解析的xml文件是以什么形式保存的。 ![](https://box.kancloud.cn/2016-01-09_56911dd3efe5c.jpg) 對應的屬性都存在了TestPackageDef對應的屬性中,要執行的case保存在mTests的列表中。 ![](https://box.kancloud.cn/2016-01-09_56911dd41fcae.jpg)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看