Nếu bạn chưa quen với việc phát triển nền tảng Android, thì bạn có thể thấy ví dụ hoàn chỉnh này về cách thêm mã nhị phân GTest hoàn toàn mới (đôi khi còn được gọi là thử nghiệm "gốc") từ đầu rất hữu ích để chứng minh quy trình công việc điển hình có liên quan. Để biết thêm thông tin về khung GTest cho C++, hãy tham khảo trang web dự án GTest để biết thêm tài liệu.
Hướng dẫn này sử dụng Hello World GTest làm ví dụ. Chúng tôi khuyên bạn nên đọc qua mã để hiểu sơ bộ về mã trước khi tiếp tục.
Quyết định vị trí nguồn
Thông thường, nhóm của bạn sẽ có sẵn một mẫu thiết lập các vị trí để kiểm tra mã và các vị trí để thêm các bài kiểm tra. Hầu hết các nhóm sở hữu một kho lưu trữ git duy nhất hoặc chia sẻ một kho lưu trữ với các nhóm khác nhưng có một thư mục con chuyên dụng chứa mã nguồn thành phần.
Giả sử vị trí gốc cho nguồn thành phần của bạn là tại <component source root>
, hầu hết các thành phần đều có các thư mục src
và tests
bên dưới và một số tệp bổ sung như Android.mk
(hoặc được chia thành các tệp .bp
bổ sung).
Vì bạn đang thêm một bài kiểm tra hoàn toàn mới, nên có thể bạn sẽ cần tạo thư mục tests
bên cạnh thành phần src
của mình và điền nội dung vào đó.
Trong một số trường hợp, nhóm của bạn có thể có nhiều cấu trúc thư mục hơn trong tests
do nhu cầu đóng gói các bộ thử nghiệm khác nhau thành các tệp nhị phân riêng lẻ. Và trong trường hợp này, bạn sẽ cần tạo một thư mục con mới trong tests
.
Để minh họa, đây là phác thảo thư mục điển hình cho các thành phần có một thư mục 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
\-- ...
và đây là phác thảo thư mục điển hình cho các thành phần có nhiều thư mục nguồn thử nghiệm:
\
<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
| \-- ...
\-- ...
Bất kể cấu trúc như thế nào, cuối cùng bạn sẽ điền vào thư mục tests
hoặc thư mục con mới được tạo với các tệp tương tự như những gì trong thư mục native
trong thay đổi gerrit mẫu. Các phần bên dưới sẽ giải thích chi tiết hơn về từng tệp.
Mã nguồn
Tham khảo Hello World GTest để biết ví dụ.
Mã nguồn cho ví dụ đó được chú thích ở đây:
#include <gtest/gtest.h>
Tệp tiêu đề bao gồm cho GTest. Sự phụ thuộc của tệp bao gồm được giải quyết tự động bằng cách sử dụng BUILD_NATIVE_TEST
trong tệp thực hiện.
#include <stdio.h>
TEST(HelloWorldTest, PrintHelloWorld) {
printf("Hello, World!");
}
GTests được viết bằng cách sử dụng macro TEST
: tham số đầu tiên là tên trường hợp thử nghiệm và tham số thứ hai là tên thử nghiệm. Cùng với tên nhị phân thử nghiệm, chúng tạo thành hệ thống phân cấp sau trong bảng điều khiển kết quả:
<test binary 1>
| \-- <test case 1>
| | \-- <test 1>
| | \-- <test 2>
| | \-- ...
| \-- <test case 2>
| | \-- <test 1>
| | \-- ...
| \-- ...
<test binary 2>
|
...
Để biết thêm thông tin về viết bài kiểm tra với GTest, hãy tham khảo tài liệu về GTest
Tập tin cấu hình đơn giản
Mỗi mô-đun thử nghiệm mới phải có một tệp cấu hình để chỉ đạo hệ thống xây dựng với siêu dữ liệu mô-đun, các phụ thuộc thời gian biên dịch và hướng dẫn đóng gói. Trong hầu hết các trường hợp, tùy chọn tệp Blueprint dựa trên Soong là đủ. Xem Cấu hình thử nghiệm đơn giản để biết chi tiết.
Tập tin cấu hình phức tạp
Thay vào đó, để sử dụng Trade Federation, hãy viết tệp cấu hình thử nghiệm cho khai thác thử nghiệm của Android, Trade Federation .
Cấu hình thử nghiệm có thể chỉ định các tùy chọn thiết lập thiết bị đặc biệt và các đối số mặc định để cung cấp cho lớp thử nghiệm.
Xây dựng và thử nghiệm cục bộ
Đối với các trường hợp sử dụng phổ biến nhất, hãy sử dụng Atest .
Đối với các trường hợp phức tạp hơn cần tùy chỉnh nặng hơn, hãy làm theo hướng dẫn của thiết bị .