新增 GoogleTest (GTest)

如果您是 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
      |       \-- ...
      \-- ...

無論結構為何,您最終都會在 tests 目錄或新建立的子目錄中填入與範例 Gerrit 變更中 native 目錄相似的檔案。以下各節將詳細說明每個檔案。

原始碼

如需範例,請參閱 Hello World GTest

以下是該範例的原始碼註解:

#include <gtest/gtest.h>

GTest 的標頭檔案包含項目。在 makefile 中使用 BUILD_NATIVE_TEST 會自動解析 include 檔案依附元件。

#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

如需更複雜的做法,且需要更多自訂功能,請按照檢測器操作說明操作。