如果您是 Android 平台開發新手,不妨參考這個完整的範例,瞭解如何從頭開始新增全新的 GTest 二進位檔 (有時也稱為「原生」測試),示範相關的典型工作流程。如要進一步瞭解 C++ 的 GTest 架構,請參閱 GTest 專案網站,取得其他說明文件。
本指南以 Hello World GTest 為例,建議您先大致瞭解程式碼,再繼續操作。
決定來源位置
通常團隊會已建立程式碼簽入位置和新增測試位置的模式。大多數團隊擁有單一 git 存放區,或與其他團隊共用一個存放區,但有專屬的子目錄,內含元件原始碼。
假設元件來源的根位置位於 <component source
root>
,則大多數元件底下都有 src
和 tests
資料夾,以及一些額外檔案,例如 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 型 Blueprint 檔案選項就已足夠。詳情請參閱「簡單測試設定」。
複雜的設定檔
如要改用 Trade Federation,請為 Android 的測試架構 Trade Federation 撰寫測試設定檔。
測試設定可以指定特殊裝置設定選項,以及提供測試類別的預設引數。
在本機建構及測試
如果是最常見的用途,請使用 Atest。
如需更複雜的案例,需要進行更深入的自訂,請按照儀表板操作說明操作。