2012-01-07 27 views
15

Tôi là người mới sử dụng Android và có chút mệt mỏi với Java, xuất phát từ nền .NET. Tôi đang phát triển một số tự động hóa thử nghiệm cho một ứng dụng di động chạy trên Android.Android - InstrumentationTestRunner

Hiện nay, tôi chỉ tung ra các bài kiểm tra qua dòng lệnh sử dụng Cầu Android Debug, nhưng tôi nhận được một lỗi khi tôi cố gắng để chạy bất kỳ xét nghiệm:

Trước hết, đây là lỗi tôi 'm nhận:

junit.framework.TestSuite$1: Failure in warning: junit.framework.AssertionFailedError: No tests found in com.myapp.test.UITests at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448)

tôi đang sử dụng lệnh adb này để cố gắng để khởi động các thử nghiệm (trên một thiết bị bắt nguồn từ):

adb shell am instrument -e class com.myapp.test.UITests -w com.myapp.test/android.test.InstrumentationTestRunner

Cuối cùng, đây là lớp tôi đang cố gắng để chạy tes ts from:

package com.myapp.test; 

import android.app.Activity; 
import android.test.ActivityInstrumentationTestCase2; 
import com.jayway.android.robotium.solo.Solo; 
import junit.framework.Assert; 

@SuppressWarnings("unchecked") 
public class UITests extends ActivityInstrumentationTestCase2 
{ 
    private static final String TARGET_PACKAGE_ID = "com.myapp.main"; 
    private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "com.myapp.main.activities.MainActivity"; 
    private static Class<?> launcherActivityClass; 

    private Solo solo; 
    private Activity activity; 

    static 
    { 
     try 
     { 
      launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME); 
     } 
     catch(ClassNotFoundException e) 
     { 
      throw new RuntimeException(e); 
     } 
    } 

    public UITests() throws ClassNotFoundException 
    { 
     super(TARGET_PACKAGE_ID, launcherActivityClass); 
    } 

    @Override 
    protected void setUp() 
    { 
     activity = getActivity(); 
     solo = new Solo(getInstrumentation(), activity); 

    } 

    @Override 
    public void runTest() throws Throwable 
    { 
     // Simple Test 
     Assert.assertTrue(solo.searchText("Welcome")); 
    } 

    @Override 
    protected void tearDown() throws Exception 
    { 
     try 
     { 
      solo.finalize(); 
     } 
     catch(Throwable e) 
     { 
     } 
     getActivity().finish(); 
     super.tearDown(); 
    } 

} 

Tôi phải làm điều gì đó sai, nhưng tôi không chắc chắn về điều gì. Tôi đã dựa trên mã của mình trên một số example Tôi tìm thấy trên trang web Robotium.

Tôi rất cảm kích nếu có ai có thể chỉ ra sai lầm của tôi.

Cập nhật - Thêm tập tin Manifest theo yêu cầu

<?xml version="1.0" encoding="utf-8"?> 

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.myapp.test" 
      android:versionCode="1" 
      android:versionName="1.0"> 

    <uses-sdk android:minSdkVersion="3" /> 

    <application android:icon="@drawable/icon" android:label="@string/ws_app_name"> 
     <uses-library android:name="android.test.runner" /> 
    </application> 

    <instrumentation android:name="android.test.InstrumentationTestRunner" 
        android:targetPackage="com.myapp.main" 
        android:label="My App Tests"/> 
</manifest> 
+0

Xin hãy chia sẻ biểu hiện của bạn file .. –

+0

@RajdeepDua Tôi đã thêm tệp kê khai của mình ngay bây giờ. –

Trả lời

21

tôi quản lý để con số này ra, tôi đã không nhận ra rằng mỗi tên xét nghiệm chức năng đã phải bắt đầu với 'test' như được nêu here.

+1

Ha! Đưa tôi mãi mãi để tìm câu trả lời này, cảm ơn. – TinyTimZamboni

+1

Tôi nghĩ rằng chú thích @Test là đủ nhưng không. Cảm ơn! : D –

0

Tất cả tên Phương pháp thử nghiệm phải bắt đầu bằng thử nghiệm (Phân biệt chữ hoa chữ thường).

Ví dụ:

public void testMethod1(){ 
/.. 
../ 
} 
0

Tôi đã giải quyết này bằng cách thiết lập File/Cài đặt dự án/Flavors/thử nghiệm Instrumentation Runnerđể android.support.test.runner.AndroidJUnitRunner