หากคุณเพิ่งเริ่มพัฒนาแพลตฟอร์ม 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
ในไฟล์ make
#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
การกําหนดค่าการทดสอบสามารถระบุตัวเลือกการตั้งค่าอุปกรณ์พิเศษและอาร์กิวเมนต์เริ่มต้นเพื่อระบุคลาสทดสอบ
สร้างและทดสอบภายในเครื่อง
สำหรับกรณีการใช้งานที่พบบ่อยที่สุด ล่าสุด
สำหรับกรณีที่ซับซ้อนมากขึ้นที่ต้องปรับแต่งมากขึ้น ให้ทำตาม วิธีการวัดคุม