新增新的 GoogleTests (GTests)

如果您是 Android 平台開發新手,您可能會發現這個從頭開始添加全新 GTest 二進位檔案(有時也稱為「本機」測試)的完整範例對於演示所涉及的典型工作流程非常有用。有關 C++ GTest 框架的其他信息,請參閱GTest 專案網站以取得其他文件。

本指南以Hello World GTest為例。我們建議您在繼續之前通讀程式碼以大致了解它。

確定來源位置

通常,您的團隊已經建立了檢查程式碼的位置和添加測試的位置的模式。大多數團隊擁有一個 git 儲存庫,或與其他團隊共用一個儲存庫,但有一個包含元件原始碼的專用子目錄。

假設元件來源的根位置位於<component source root> ,大多數元件下面都有srctests資料夾,以及一些其他文件,例如Android.mk (或分解為其他.bp檔案)。

由於您要新增全新的測試,因此您可能需要在元件src旁邊建立tests目錄,並用內容填滿它。

在某些情況下,由於需要將不同的測試套件打包到單獨的二進位檔案中,您的團隊可能會在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
      |       \-- ...
      \-- ...

無論結構如何,您最終都會使用與範例 gerrit 變更中的本native目錄中的檔案類似的檔案填入tests目錄或新建立的子目錄。以下部分將進一步詳細解釋每個文件。

原始碼

請參閱Hello World GTest的範例。

此範例的原始碼註解如下:

#include <gtest/gtest.h>

包含 GTest 的頭檔。透過在 makefile 中使用BUILD_NATIVE_TEST自動解決包含檔案相依性。

#include <stdio.h>

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

GTest 是使用TEST巨集編寫的:第一個參數是測試案例名稱,第二個參數是測試名稱。它們與測試二進位檔案名稱一起在結果儀表板中形成以下層次結構:

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

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

簡單的設定檔

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

複雜的設定檔

要改用 Trade Federation,請為 Android 的測試工具Trade Federation編寫一個測試設定檔。

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

本地建置和測試

對於最常見的用例,請使用Atest

對於需要大量客製化的更複雜的情況,請遵循儀器說明