添加新的本地測試示例

如果您不熟悉 Android 平台開發,您可能會發現這個從頭開始添加全新原生測試的完整示例有助於演示所涉及的典型工作流程。另外,如果你也熟悉了C中的GTEST框架++,請查看GTEST項目現場提供更多的文件。

本指南使用以下測試作為示例:

Hello World 本地測試

建議在繼續之前先瀏覽代碼以獲得粗略的印象。

確定源位置

通常,您的團隊已經有一個既定的代碼檢入位置和添加測試位置的模式。大多數團隊擁有一個單獨的 git 存儲庫,或者與其他團隊共享一個,但有一個包含組件源代碼的專用子目錄。

假設根位置為組件源是在<component source root> ,大多數元件具有srctests其下的文件夾,以及一些其他文件如Android.mk (或分解成附加.bp文件)。

既然你要添加一個全新的測試,你可能需要創建tests目錄旁邊的組件src ,並與內容填充它。

在某些情況下,你的團隊可能有進一步下目錄結構tests由於需要封裝測試到各個二進制不同的套件。在這種情況下,你需要在創建一個新的子目錄tests

為了說明這一點,這是一個有一個單一的組成部分的典型目錄大綱tests文件夾:

\
 <component source root>
  \-- Android.bp (component makefile)
  \-- AndroidTest.xml (test config file)
  \-- src (component source)
  |    \-- foo.cpp
  |    \-- ...
  \-- tests (test source root)
      \-- Android.bp (test makefile)
      \-- src (test source)
          \-- foo_test.cpp
          \-- ...

這是具有多個測試源目錄的組件的典型目錄大綱:

\
 <component source root>
  \-- Android.bp (component makefile)
  \-- AndroidTest.xml (test config file)
  \-- src (component source)
  |    \-- foo.cpp
  |    \-- ...
  \-- tests (test source root)
      \-- Android.bp (test makefile)
      \-- testFoo (sub test source root)
      |   \-- Android.bp (sub test makefile)
      |   \-- src (sub test source)
      |       \-- test_foo.cpp
      |       \-- ...
      \-- testBar
      |   \-- Android.bp
      |   \-- src
      |       \-- test_bar.cpp
      |       \-- ...
      \-- ...

不管結構,你最終會填充tests目錄或相似的什麼在文件中的新創建的子目錄native目錄中的樣本格里特變化。下面的部分將詳細解釋每個文件。

源代碼

看到的Hello World本地測試的一個例子。

註釋源代碼如下:

#include <gtest/gtest.h>

包含 gtest 的頭文件。需要注意的是包含文件的依賴是通過使用自動解決BUILD_NATIVE_TEST在makefile

#include <stdio.h>

TEST(HelloWorldTest, PrintHelloWorld) {
    printf("Hello, World!");
}

gtests通過使用寫入TEST宏:第一個參數是測試案例名稱,第二個是測試名稱;當在結果儀表板中可視化時,它們與測試二進制名稱一起形成以下層次結構:

<test binary 1>
| \-- <test case 1>
| |   \-- <test 1>
| |   \-- <test 2>
| |   \-- ...
| \-- <test case 2>
| |   \-- <test 1>
| |   \-- ...
| \-- ...
<test binary 2>
|
...

有關使用 gtest 編寫測試的更多信息,請參閱其文檔:

  • https://github.com/google/googletest/blob/master/googletest/docs/Primer.md

簡單的配置文件

每個新的測試模塊都必須有一個配置文件,以使用模塊元數據、編譯時依賴項和打包指令來指導構建系統。在大多數情況下,基於 Soong 的藍圖文件選項就足夠了。見簡單的測試配置的詳細信息。

複雜的配置文件

要使用貿易聯合會相反,編寫Android的測試工具,測試配置文件貿易聯合會

測試配置可以指定特殊的設備設置選項和默認參數來提供測試類。

在本地構建和測試

對於最常見的使用情況,應用ATEST

對於需要重定制更複雜的情況,按照儀器說明書