หมายเหตุ: โซลูชันนี้ขึ้นอยู่กับการใช้ Eclipse Indigo (3.8.2) และอาจต้องใช้งานแตกต่างกันเล็กน้อยสำหรับ IDE อื่นแม้ว่าหลักการพื้นฐานจะเหมือนกัน
ฉันมีปัญหาที่คล้ายกันและพบว่าการทำสิ่งต่อไปนี้ใช้ได้ผลเสมอ:
( หมายเหตุ: คำแนะนำเหล่านี้มีไว้สำหรับการสร้างกลุ่มโครงการใหม่ตั้งแต่ต้นหากคุณได้สร้างบางส่วนของกลุ่มโครงการแล้วคุณอาจต้องแก้ไขโครงการของคุณเพื่อให้เชื่อมต่อในลักษณะเดียวกัน )
- สร้างโครงการไลบรารี Android ใหม่โดยเลือกช่องทำเครื่องหมาย "Is Library" ระหว่างการสร้าง (ตัวอย่างเช่นโครงการ Android ชื่อ "RemingtonAndroidTools")
- สร้างโครงการไลบรารี Android และตรวจสอบว่าสร้างไฟล์ jar ในโฟลเดอร์ bin (ตัวอย่างเช่นไฟล์ jar ชื่อ "RemingtonAndroidTools.jar")
- สร้างโครงการ Android เปล่าสำหรับทดสอบแอป Android ที่จะใช้เป็นแอปทดสอบ Android (ตัวอย่างเช่นโครงการ Android ชื่อ "RemingtonAndroidToolsTestApp") คุณไม่จำเป็นต้องแก้ไขซอร์สโค้ดหรือทรัพยากรของโครงการ Android Test App เว้นแต่คุณจะมีบางอย่างที่ต้องเพิ่มสำหรับการทดสอบ หลายสิ่งสามารถทดสอบได้โดยไม่ต้องแก้ไขใด ๆ กับโครงการทดสอบแอป Android โครงการ Android Test App เป็นสะพานเชื่อมระหว่างโครงการ Android Library กับโครงการ Android Junit ที่ทำให้การทดสอบโครงการ Android Library ผ่าน Android Junit เป็นไปได้
- ไปที่แท็บ Library ของ Java Build Path สำหรับโครงการ Android Test App ("RemingtonAndroidToolsTestApp" ในตัวอย่างนี้)
- เพิ่มไฟล์ jar ("RemingtonAndroidTools.jar" ในตัวอย่างนี้) ของ Android Library Project ("RemingtonAndroidTools ในตัวอย่างนี้) ผ่านปุ่ม" Add Jars ... "
- สร้างโครงการทดสอบ Android ใหม่ (เช่น "RemingtonAndroidToolsTester") ที่จะทำหน้าที่เป็นผู้ทดสอบห้องสมุด Android และเลือกโครงการ Android Test App ("RemingtonAndroidToolsTestApp" ในตัวอย่างนี้) เป็นเป้าหมาย
- ไปที่แท็บ Library ของ Java Build Path สำหรับโครงการ Android Library Tester ("RemingtonAndroidToolsTester" ในตัวอย่างนี้)
- เพิ่มไฟล์ jar ("RemingtonAndroidTools.jar" ในตัวอย่างนี้) ของ Android Library Project ("RemingtonAndroidTools ในตัวอย่างนี้) ผ่านปุ่ม" Add Jars ... "
- ค้นหาโฟลเดอร์สุดท้ายของแพ็กเกจ Android ของคุณในโครงการ Android Library Tester (ตัวอย่างเช่น "danny.remington.remington_android_tools_test_app.test") และเพิ่มคลาสทดสอบ (เช่น "MainActivityTest") ที่สืบทอดมาจาก ActivityInstrumentationTestCase2
- แก้ไขคลาสทดสอบ ("TestActivityTest" ในตัวอย่างนี้) เพื่อใช้กิจกรรม (เช่น "TestActivity") ของแอปทดสอบ Android ("RemingtonAndroidToolsTestApp" ในตัวอย่างนี้) เป็นพารามิเตอร์สำหรับ ActivityInstrumentationTestCase2
- แก้ไขคลาสทดสอบ ("TestActivityTest" ในตัวอย่างนี้) และสร้างตัวสร้างเริ่มต้นที่โทรไปยัง super (Class) และส่งผ่านคลาสของ Android Test App (เช่น "TestActivity.class")
คุณควรจะจบลงด้วยโครงการสามโครงการ (Android Library, Android Test App, Android Library Tester) ที่มีลักษณะคล้ายกับสิ่งนี้:
คุณควรจบลงด้วยคลาสสำหรับทดสอบไลบรารี Android ของคุณที่มีลักษณะคล้ายกับสิ่งนี้:
package danny.remington.remington_android_tools_test_app.test;
import android.test.ActivityInstrumentationTestCase2;
import danny.remington.remington_android_tools_test_app.TestActivity;
public class TestActivityTest extends
ActivityInstrumentationTestCase2<TestActivity> {
public TestActivityTest() {
super(TestActivity.class);
}
}
จากนั้นคุณสามารถเพิ่มการทดสอบใดก็ได้ที่คุณต้องการ คุณไม่จำเป็นต้องอ้างอิงแอปทดสอบ Android ("RemingtonAndroidToolsTestApp" ในตัวอย่างนี้) อีกต่อไปเพื่อเรียกใช้การทดสอบของคุณเว้นแต่จะต้องการการเข้าถึงส่วนประกอบเฉพาะของ Android (เช่นโฟลเดอร์ Assets เป็นต้น) หากคุณต้องการเข้าถึงส่วนประกอบเฉพาะของ Android คุณสามารถทำได้โดยการแก้ไขแอปทดสอบ Android ("RemingtonAndroidToolsTestApp" ในตัวอย่างนี้) จากนั้นอ้างอิงผ่านเครื่องมือที่จัดเตรียมโดย Android Junit API มาตรฐาน (คุณสามารถอ่านเพิ่มเติมได้ที่นี่: http://developer.android.com/tools/testing/testing_android.html )