如果您是 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
| \-- ...
\-- ...
無論結構如何,您最終都會使用與範例 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 。
對於需要大量客製化的更複雜的情況,請遵循儀器說明。