ในการทดสอบ iOS app ผ่านระบบ Continuous Integration นั้น
จำเป็นต้องทำการทดสอบทั้ง Unit test และ UI test
และสร้างผลการทดสอบในรูปแบบ JUnit
เพื่อสรุปผลการทดสอบต่าง ๆ ให้ง่ายและชัดเจน
ปกติจะใช้
xcpretty ร่วมกับ xcodebuild
แต่ว่าจะลำบากขึ้นเมื่อใช้งานร่วมกับ XCode 8
ดังนั้นทางผู้พัฒนา fastlane ก็ได้สร้างเครื่องมือใหม่ชื่อว่า
trainer ขึ้นมา
ซึ่งใช้ง่ายกว่า และ ทำการได้รวดเร็วกว่า
ดังนั้นลองมาใช้งานกันดูหน่อย
เริ่มด้วยการติดตั้ง
สามารถติดตั้งได้ 2 แบบคือ
- ติดตั้งผ่าน RubyGems
- ติดตั้งผ่านระบบ plugin ของ fastlane
โดยสิ่งที่ผมใช้งานคือ ติดตั้งผ่าน RubyGems
ด้วยคำสั่ง
[code]
$gem install trainer
[/code]
จากนั้นเข้าไปยัง folder ของ Xcode project ของเรา
ทำการ compile และ ทดสอบด้วย
scan ของ fastlane
ด้วยคำสั่ง
[code]
$scan --derived_data_path "output_dir"
[/code]
จะทำการ compile code และ ทดสอบทั้ง Unit test และ UI test
ผลการทดสอบถูกสร้างอยู่ใน folder ชื่อว่า output_dir
แสดงการทำงานดังรูป
จากนั้นทำการแปลงผลการทดสอบไปอยู่ในรูปแบบ JUnit ด้วย trainer
ด้วยคำสั่ง
[code]
$trainer
[/code]
จะทำการอ่านข้อมูลใน folder output_dir มาแปลงให้อยู่ในรูปแบบ JUnit
แสดงการทำงานดังรูป
จากนั้นสามารถนำ JUnit report เหล่านี้ไปแสดงผลบนระบบ Continuous Integration ได้แล้ว
ซึ่งทำการ configuration ไว้ใน Jenkins ดังนี้
ส่วนผลการแสดงผลรายงานใน Jenkins เป็นดังนี้
เพียงเท่านี้ก็สามารถนำ 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/