Tambahkan GoogleTests baru (GTests)

Jika Anda baru mengenal pengembangan platform Android, Anda mungkin menemukan contoh lengkap penambahan biner GTest baru (terkadang juga disebut pengujian "asli") dari awal berguna untuk menunjukkan alur kerja umum yang terlibat. Untuk informasi tambahan tentang kerangka GTest untuk C++, lihat situs proyek GTest untuk dokumentasi tambahan.

Panduan ini menggunakan Hello World GTest sebagai contoh. Kami merekomendasikan untuk membaca kode secara menyeluruh untuk mendapatkan pemahaman kasar sebelum Anda melanjutkan.

Tentukan lokasi sumber

Biasanya tim Anda sudah memiliki pola tempat untuk memeriksa kode, dan tempat untuk menambahkan tes. Sebagian besar tim memiliki satu repositori git, atau berbagi repositori dengan tim lain tetapi memiliki subdirektori khusus yang berisi kode sumber komponen.

Dengan asumsi lokasi root untuk sumber komponen Anda berada di <component source root> , sebagian besar komponen memiliki folder src dan tests di bawahnya, dan beberapa file tambahan seperti Android.mk (atau dipecah menjadi file .bp tambahan).

Karena Anda menambahkan pengujian baru, Anda mungkin perlu membuat direktori tests di samping komponen src , dan mengisinya dengan konten.

Dalam beberapa kasus, tim Anda mungkin memiliki struktur direktori lebih lanjut yang sedang tests karena kebutuhan untuk mengemas rangkaian pengujian yang berbeda ke dalam biner individual. Dan dalam hal ini, Anda harus membuat sub direktori baru di bawah tests .

Sebagai ilustrasi, berikut adalah kerangka direktori umum untuk komponen dengan satu folder 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
          \-- ...

dan inilah garis besar direktori umum untuk komponen dengan beberapa direktori sumber pengujian:

\
 <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
      |       \-- ...
      \-- ...

Terlepas dari strukturnya, Anda akan mengisi direktori tests atau sub direktori yang baru dibuat dengan file yang mirip dengan apa yang ada di direktori native dalam contoh perubahan gerrit. Bagian di bawah ini akan menjelaskan lebih detail setiap file.

Kode sumber

Lihat Hello World GTest sebagai contoh.

Kode sumber untuk contoh tersebut dijelaskan di sini:

#include <gtest/gtest.h>

File header disertakan untuk GTest. Ketergantungan file yang disertakan secara otomatis diselesaikan dengan menggunakan BUILD_NATIVE_TEST di makefile.

#include <stdio.h>

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

GTests ditulis menggunakan makro TEST : parameter pertama adalah nama kasus pengujian, dan parameter kedua adalah nama pengujian. Bersama dengan nama biner pengujian, mereka membentuk hierarki berikut di dasbor hasil:

<test binary 1>
| \-- <test case 1>
| |   \-- <test 1>
| |   \-- <test 2>
| |   \-- ...
| \-- <test case 2>
| |   \-- <test 1>
| |   \-- ...
| \-- ...
<test binary 2>
|
...

Untuk informasi selengkapnya tentang tes menulis dengan GTest, lihat dokumentasi GTest

File konfigurasi sederhana

Setiap modul pengujian baru harus memiliki file konfigurasi untuk mengarahkan sistem build dengan metadata modul, dependensi waktu kompilasi, dan instruksi pengemasan. Dalam kebanyakan kasus, opsi file Cetak Biru berbasis Soong sudah cukup. Lihat Konfigurasi Pengujian Sederhana untuk detailnya.

File konfigurasi yang rumit

Untuk menggunakan Trade Federation, tulis file konfigurasi pengujian untuk test harness Android, Trade Federation .

Konfigurasi pengujian dapat menentukan opsi pengaturan perangkat khusus dan argumen default untuk menyediakan kelas pengujian.

Bangun dan uji secara lokal

Untuk kasus penggunaan paling umum, gunakan Atest .

Untuk kasus yang lebih kompleks yang memerlukan penyesuaian lebih berat, ikuti petunjuk instrumentasi .