เพิ่ม GoogleTests (GTests) ใหม่

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

คู่มือนี้ใช้ GTest สำหรับ Hello World เราขอแนะนำให้อ่านโค้ดเพื่อทำความเข้าใจอย่างคร่าวๆ ก่อนที่จะดำเนินการต่อ

เลือกตําแหน่งของแหล่งที่มา

โดยปกติทีมของคุณจะมีรูปแบบที่กำหนดของสถานที่ที่จะตรวจสอบอยู่แล้ว ในโค้ด และตำแหน่งที่จะเพิ่มการทดสอบ ทีมส่วนใหญ่มีที่เก็บ 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 GTest

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

#include <gtest/gtest.h>

ไฟล์ส่วนหัวรวมสำหรับ GTest ระบบจะอ้างอิงไฟล์ "รวม" โดยอัตโนมัติ แก้ไขได้โดยใช้ 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

ไฟล์การกำหนดค่าแบบง่าย

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

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

หากต้องการใช้สหพันธ์การค้าแทน ให้เขียนการกำหนดค่าการทดสอบ สำหรับโปรแกรมทดสอบของ Android นั่นคือ Trade Federation

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

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

สำหรับกรณีการใช้งานที่พบบ่อยที่สุด ล่าสุด

สำหรับกรณีที่ซับซ้อนมากขึ้นซึ่งต้องปรับแต่งมากขึ้น ให้ทำตาม วิธีการวัดคุม