Testing the Application
From Blognone
ทดสอบแอพพลิเคชัน
ถึงแม้ว่าจะมี IDE สำหรับ HTML (อย่างเช่น Dreamweaver) หลายตัวที่สนับสนุนการรันแอพพลิเคชัน AIR เพื่อทดสอบได้ในตัว แต่เราจะมาดูวิธีการเรียกและทดสอบแอพพลิเคชัน AIR โดยใช้เครื่องมือคอมมานด์ไลน์ ADL ซึ่งมากับชุด SDK วิธีนี้จะทำให้คุณเข้าใจว่าเกิดอะไรขึ้นบ้างระหว่างการรัน
Contents |
ใช้ ADL เพื่อเรียกแอพพลิเคชัน
ขั้นแรกสุดในการทดสอบแอพพลิเคชัน คุณควรตรวจสอบว่า
- ไม่มีอะไรผิดพลาดในไฟล์อธิบายข้อมูลแอพพลิเคชัน
- แอพพลิเคชันทำงานได้
- การแสดงผล HTML ถูกต้อง
- โค้ด JavaScript ทำงานตามที่ต้องการ
เราสามารถทำแพ็กเกจของแอพพลิเคชันทั้งตัว จากนั้นติดตั้งและลองเรียกใช้งานมันได้ แต่นั่นเป็นวิธีที่ยุ่งยากต่อการทดสอบ โชคดีที่ SDK ของ AIR ได้ให้ ADL ซึ่งช่วยให้คุณสามารถเรียกแอพพลิเคชัน AIR ขึ้นมาทำงานโดยไม่ต้องติดตั้งได้
ขั้นตอนการทดสอบมีดังนี้
- เปิดหน้าต่าง Terminal (Mac) หรือ Console (Windows)
- เปลี่ยนไดเรคทอรีไปยังที่ที่มีไฟล์ AIRHelloWorld.html และ AIRHelloWorld.xml
- เรียกใช้ ADL ตามด้วยชื่อของไฟล์อธิบายข้อมูลแอพพลิเคชัน ดังนี้
- adl AIRHelloWorld.xml
คุณควรจะเห็นแอพพลิเคชันโดยใช้หน้าต่างมาตรฐานของระบบปฏิบัติการ
(ภาพ)
ถ้าแอพพลิเคชันทำงานไม่ถูกต้อง หรือคุณเจอข้อความแสดงความผิดพลาด คุณควรตรวจสอบว่า
- คุณตั้งค่า SDK ถูกต้อง และหา ADL เจอ
- คุณเรียกคำสั่ง ADL จากไดเรคทอรีที่มีไฟล์ AIRHelloWorld.xml
- ไฟล์อธิบายข้อมูลแอพพลิเคชันมี syntax XML ที่ถูกต้อง (well-formed)
- ข้อมูลในไฟล์อธิบายแอพพลิเคชันถูกต้อง โดยเฉพาะ rootContent
- ตรวจสอบว่า AIRHelloWorld.html และ AIRHelloWorld.xml อยู่ในไดเรคทอรีเดียวกัน
เมื่อคุณแก้ปัญหาเหล่านี้ และสามารถเรียกแอพพลิเคชันได้แล้ว คุณยังสามารถเรียนรู้วิธีดูข้อมูลจากแอพพลิเคชันขณะรันได้ด้วย
ดูผลการทำงานของแอพพลิเคชันขณะรัน
เมื่อทำมีหลายวิธีการในการหาข้อมูลและดีบั๊ก ขณะที่เรียกแอพพลิเคชันด้วยคำสั่ง ADL
ข้อผิดพลาด JavaScript ขณะรัน
ความผิดพลาดทั้งหมดที่เกิดจาก JavaScript ในช่วงที่แอพพลิเคชันกำลังรันจาก ADL นั้น จะแสดงออกมาทาง standard output ของ ADL
ลองแก้ให้แอพพลิเคชันเกิดข้อผิดพลาดเพื่อดู output โดยเปลี่ยนข้อความใน AIRHelloWorld.html ดังนี้
<html>
<head>
<title>AIRHelloWorld</title>
<script>
function init( )
{
runtime2.trace("init function called");
}
</script>
</head>
<body onload="init( )">
<div align="center">Hello World</div>
</body>
</html>
สิ่งที่เราแก้ไขคือในฟังก์ชัน init โดยเปลี่ยนค่า runtime เป็น runtime2 (ซึ่งไม่มีอยู่จริง)
runtime2.trace("init function called");
จากนั้นบันทึกไฟล์แล้วเรียกแอพพลิเคชันด้วย ADL
adl AIRHelloWorld.xml
แอพพลิเคชันควรทำงานได้ และคุณควรเห็น output จากคอมมานด์ไลน์ดังนี้
ReferenceError: Can't find variable: runtime2 init at app-resource:/AIRHelloWorld.html : 8 init at app-resource:/AIRHelloWorld.html : 8 onload at app-resource:/AIRHelloWorld.html : 13
ข้อความที่เห็นเกิดจากการค้นหาตัวแปร runtime2 ไม่พบ ตามด้วยเลขบรรทัดของโค้ดที่เป็นปัญหา และ stack trace ของการเรียกโปรแกรมให้ทำงาน
ข้อมูลเหล่านี้จะช่วยในการค้นหาข้อผิดพลาดภายในแอพพลิเคชันของคุณ
ในบางครั้งมีโอกาสที่แอพพลิเคชันทำงานได้ไม่ถูกต้อง แต่ไม่แสดงข้อผิดพลาดออกมา ในกรณีแบบนี้การใช้วิธีดูข้อมูลของแอพพลิเคชันขณะรันจะมีประโยชน์มาก
AIR มีฟังก์ชันที่ช่วยให้การส่งข้อมูลจากแอพพลิเคชันออกมาทาง standard out ขณะรันทำได้ง่ายขึ้น
runtime.trace
ดังที่เราได้ทำในบทนี้ Adobe AIR มีขบวนการในการส่งข้อความจาก JavaScript ออกไปยังคอมมานด์ไลน์
ฟังค์ชัน trace จากคุณสมบัติ runtime รับข้อความซึ่งจะถูกแสดงออกที่ standard out ของ ADL นี่เป็นตัวอย่างการใช้งาน
runtime.trace("This will be sent to standard out");
นี่จะเป็นประโยชน์มากในการแสดงข้อมูลเกี่ยวกับสถานะของแอพพลิเคชันโดยไม่รบกวนการทำงานของโปรแกรม
ออบเจ็คท์ที่ไม่ใช่ข้อความที่ถูกส่งให้กับ trace จะถูกเรียกฟังค์ชั่น toString() ของมัน โดยออบเจ็คท์ Object ของ JavaScript จะมีฟังค์ชัน toString() พื้นฐานอยู่ และบางคลาส (เช่น Array) อาจจะมีฟังค์ชัน toString() ที่ทำงานสัมพันธ์กับข้อมูลของมัน
นี่เป็นตัวอย่างของการแสดงข้อมูลหลายแบบที่เก็บไว้ในอาเรย์
var a = ["a", 1, {foo:"bar"}];
runtime.trace(a);
ผลลัพธ์ของชุดคำสั่งนี้ จะแสดงที่คอมมานด์ไลน์จาก ADL
a,1,[object Object]
แน่นอน คุณสามารถเขียนฟังค์ชัน toString() ของคุณเองสำหรับคลาสใน JavaScript ที่คุณพัฒนาขึ้นมา หรือเขียนทับฟังค์ชัน toString() ของคลาสที่มีอยู่แล้ว เพื่อที่จะแสดงข้อมูลที่เฉพาะเจาะจงมากขึ้น