การเพิ่มตัวอย่างการทดสอบเนทีฟใหม่

หากคุณยังใหม่ต่อการพัฒนาแพลตฟอร์ม Android คุณอาจพบว่าตัวอย่างที่สมบูรณ์ของการเพิ่มการทดสอบเนทีฟแบบใหม่ตั้งแต่ต้นมีประโยชน์ในการสาธิตขั้นตอนการทำงานทั่วไปที่เกี่ยวข้อง นอกจากนี้หากคุณยังไม่คุ้นเคยกับกรอบ gtest สำหรับ C ++, โปรดตรวจสอบ เว็บไซต์ของโครงการ gtest เอกสารเพิ่มเติม

คู่มือนี้ใช้การทดสอบติดตามเพื่อเป็นตัวอย่าง:

สวัสดีชาวโลก แบบทดสอบ

ขอแนะนำให้เรียกดูโค้ดก่อนเพื่อให้ได้ข้อมูลคร่าวๆ ก่อนดำเนินการต่อ

การตัดสินใจเลือกตำแหน่งต้นทาง

โดยทั่วไปแล้ว ทีมของคุณจะมีรูปแบบสถานที่สำหรับตรวจสอบโค้ดอยู่แล้ว และสถานที่สำหรับเพิ่มการทดสอบ ทีมส่วนใหญ่เป็นเจ้าของที่เก็บ git เดียวหรือใช้ร่วมกับทีมอื่น แต่มีไดเร็กทอรีย่อยเฉพาะที่มีซอร์สโค้ดของส่วนประกอบ

สมมติว่าตำแหน่งรากสำหรับแหล่งส่วนประกอบของคุณอยู่ที่ <component source root> ส่วนประกอบส่วนใหญ่จะมี src และ tests โฟลเดอร์ภายใต้มันและบางไฟล์เพิ่มเติมเช่น Android.mk (หรือแตกออกเป็นเพิ่มเติม .bp ไฟล์)

เนื่องจากคุณจะเพิ่มแบรนด์ทดสอบใหม่คุณอาจจะต้องสร้าง tests ไดเรกทอรีถัดจากคอมโพเนนต์ของคุณ src และเติมมันมีเนื้อหา

ในบางกรณีทีมงานของคุณอาจมีโครงสร้างไดเรกทอรีต่อไปภายใต้ 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 ไดเรกทอรีหรือไดเรกทอรีย่อยที่สร้างขึ้นใหม่กับไฟล์คล้ายกับสิ่งที่อยู่ใน native ไดเรกทอรีในการเปลี่ยนแปลง Gerrit ตัวอย่าง ส่วนด้านล่างจะอธิบายรายละเอียดเพิ่มเติมของแต่ละไฟล์

รหัสแหล่งที่มา

ดู การทดสอบพื้นเมือง Hello World เช่น

ซอร์สโค้ดที่มีคำอธิบายประกอบอยู่ด้านล่าง:

#include <gtest/gtest.h>

รวมไฟล์ส่วนหัวสำหรับ gtest โปรดทราบว่ารวมถึงการพึ่งพาไฟล์ได้รับการแก้ไขโดยอัตโนมัติโดยใช้ BUILD_NATIVE_TEST ใน Makefile

#include <stdio.h>

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

gtests นั้นเขียนขึ้นโดยใช้ TEST แมโคร: พารามิเตอร์แรกเป็นชื่อกรณีทดสอบและที่สองเป็นชื่อการทดสอบ; ร่วมกับชื่อไบนารีทดสอบ พวกเขาสร้างลำดับชั้นด้านล่างเมื่อแสดงในแดชบอร์ดผลลัพธ์:

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการเขียนการทดสอบด้วย gtest โปรดดูเอกสารประกอบ:

  • https://github.com/google/googletest/blob/master/googletest/docs/Primer.md

ไฟล์กำหนดค่าอย่างง่าย

โมดูลทดสอบใหม่แต่ละโมดูลต้องมีไฟล์การกำหนดค่าเพื่อกำหนดทิศทางระบบบิลด์ด้วยข้อมูลเมตาของโมดูล การขึ้นต่อกันเวลาคอมไพล์ และคำแนะนำในการบรรจุภัณฑ์ ในกรณีส่วนใหญ่ ตัวเลือกไฟล์พิมพ์เขียวแบบ Soong ก็เพียงพอแล้ว ดู การกำหนดค่าทดสอบอย่างง่าย เพื่อดูรายละเอียด

ไฟล์การกำหนดค่าที่ซับซ้อน

ที่จะใช้มาพันธ์การค้าแทนเขียนแฟ้มการกำหนดค่าสำหรับการทดสอบเทียมทดสอบของ Android มาพันธ์การค้า

การกำหนดค่าการทดสอบสามารถระบุตัวเลือกการตั้งค่าอุปกรณ์พิเศษและอาร์กิวเมนต์เริ่มต้นเพื่อจัดหาคลาสการทดสอบ

สร้างและทดสอบในเครื่อง

สำหรับส่วนกรณีการใช้งานร่วมกันจ้าง Atest

สำหรับกรณีที่ซับซ้อนมากขึ้นที่กำหนดให้การปรับแต่งหนักทำตาม คำแนะนำเครื่องมือ