trainer-00
ในการทดสอบ iOS app ผ่านระบบ Continuous Integration นั้น
จำเป็นต้องทำการทดสอบทั้ง Unit test และ UI test
และสร้างผลการทดสอบในรูปแบบ JUnit
เพื่อสรุปผลการทดสอบต่าง ๆ ให้ง่ายและชัดเจน
ปกติจะใช้ xcpretty ร่วมกับ xcodebuild
แต่ว่าจะลำบากขึ้นเมื่อใช้งานร่วมกับ XCode 8

ดังนั้นทางผู้พัฒนา fastlane ก็ได้สร้างเครื่องมือใหม่ชื่อว่า trainer ขึ้นมา
ซึ่งใช้ง่ายกว่า และ ทำการได้รวดเร็วกว่า

ดังนั้นลองมาใช้งานกันดูหน่อย

เริ่มด้วยการติดตั้ง

สามารถติดตั้งได้ 2 แบบคือ

  1. ติดตั้งผ่าน RubyGems
  2. ติดตั้งผ่านระบบ plugin ของ fastlane

โดยสิ่งที่ผมใช้งานคือ ติดตั้งผ่าน RubyGems
ด้วยคำสั่ง

$gem install trainer

จากนั้นเข้าไปยัง folder ของ Xcode project ของเรา

ทำการ compile และ ทดสอบด้วย scan ของ fastlane
ด้วยคำสั่ง

$scan --derived_data_path "output_dir"

จะทำการ compile code และ ทดสอบทั้ง Unit test และ UI test
ผลการทดสอบถูกสร้างอยู่ใน folder ชื่อว่า output_dir
แสดงการทำงานดังรูป

trainer-01

จากนั้นทำการแปลงผลการทดสอบไปอยู่ในรูปแบบ JUnit ด้วย trainer

ด้วยคำสั่ง

$trainer

จะทำการอ่านข้อมูลใน folder output_dir มาแปลงให้อยู่ในรูปแบบ JUnit
แสดงการทำงานดังรูป

trainer-02

จากนั้นสามารถนำ JUnit report เหล่านี้ไปแสดงผลบนระบบ Continuous Integration ได้แล้ว

ซึ่งทำการ configuration ไว้ใน Jenkins ดังนี้

trainer-03

ส่วนผลการแสดงผลรายงานใน Jenkins เป็นดังนี้

trainer-04

เพียงเท่านี้ก็สามารถนำ trainer มาช่วยแปลงข้อมูลการทดสอบ
ให้อยู่ในรูปแบบ JUnit เรียบร้อยครับ มันง่ายมาก ๆ

Reference Websites
https://krausefx.com/blog/trainer-the-simplest-way-to-generate-a-junit-report-of-your-ios-tests
https://pspdfkit.com/blog/2016/converting-xcode-test-results-the-fast-way/