Thêm GoogleTests (GTest) mới

Nếu mới bắt đầu phát triển nền tảng Android, bạn có thể thấy ví dụ hoàn chỉnh này về việc thêm tệp 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 hữu ích để minh họa quy trình làm 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 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ề nó 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 địa điểm để kiểm tra mã và các địa điểm để thêm bài kiểm tra. Hầu hết 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à ở <component source root> , hầu hết các thành phần đều có các thư mục srctests bên dưới nó, cùng 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 thử nghiệm 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 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ó thêm cấu trúc thư mục để tests do cần phải đóng gói các bộ kiểm thử 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 phần tests .

Để minh họa, đây là sơ đồ thư mục điển hình cho các thành phần có một thư mục tests duy nhất:

\
 <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 kiểm tra:

\
 <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ì có 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

Hãy tham khảo Hello World GTest để biết ví dụ.

Mã nguồn của ví dụ đó được chú thích ở đây:

#include <gtest/gtest.h>

Tệp tiêu đề bao gồm cho GTest. Phần 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 tạo tệp.

#include <stdio.h>

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

GTest được viết bằng macro TEST : tham số đầu tiên là tên trường hợp kiểm thử và tham số thứ hai là tên kiểm thử. 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 thông tin 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ề cách viết bài kiểm tra bằng GTest, hãy tham khảo tài liệu GTest

Tập tin cấu hình đơn giản

Mỗi mô-đun thử nghiệm mới phải có tệp cấu hình để điều khiển hệ thống xây dựng bằng siêu dữ liệu mô-đun, các phần phụ thuộc tại thời điểm 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 cấu hình phức tạp

Thay vào đó, để sử dụng Liên đoàn Thương mại, hãy viết tệp cấu hình thử nghiệm cho khai thác thử nghiệm của Android, Liên đoàn Thương mại .

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 tại địa phương

Đố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 yêu cầu tùy chỉnh nhiều hơn, hãy làm theo hướng dẫn về thiết bị đo đạc .