2012-07-09 159 views
2

沒有檢測到我試圖用robotium運行以下的Android JUnit3測試:Android的JUnit測試中Robotium

import android.test.ActivityInstrumentationTestCase2; 
import com.package.sample.MyActivityClass; 
import com.jayway.android.robotium.solo.Solo; 

public class TestSample extends ActivityInstrumentationTestCase2<MyActivityClass> { 
    private Solo solo; 
    public TestSample() { 
     super("com.package.sample", MyActivityClass.class); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    public void clickbutton1() throws Exception{ 
     solo.clickOnButton("abc"); 
     solo.setActivityOrientation(Solo.LANDSCAPE); 
     assertTrue(solo.searchText("load")); 
    } 

    @Override 
    protected void tearDown() throws Exception{ 
     solo.finishOpenedActivities(); 
    } 
} 

JUnit的探索表明0/0的測試運行。調試器不打這裏提到的任何代碼路徑和控制檯輸出「試運行完成」 ??:

Uploading MyAppTest.apk onto device 'emulator-5554' 
Installing MyAppTest.apk... 
Success! 
Project dependency found, installing: MyApp 
Uploading MyApp.apk onto device 'emulator-5554' 
Installing MyApp.apk... 
Success! 
Launching instrumentation android.test.InstrumentationTestRunner on device emulator-5554 
Collecting test information 
Sending test information to Eclipse 
Running tests... 
Test run finished 

有沒有人有一個想法,什麼是錯的?我虔誠地遵循robotium教程中的所有步驟。我知道這附近有很多問題,但我已經解決了所有問題。

另外Robotium也有與JUnit4 here類似的問題。

+0

我正在使用Android 2.3.3 [API 10],Junit3,Robotium 3.2.1 – Alphafa 2012-07-09 07:00:00

+0

有問題。 Junit3出於某種愚蠢的原因(愚蠢,因爲它在文檔中未明確提及)期望測試用例名稱包含「test *」前綴。 – Alphafa 2012-07-10 10:51:00

+0

花了我幾天的時間才弄清楚。我實際上不得不聯繫創建它的人來弄清楚。你會認爲他們會在他們的文檔中提到,但他們不會。 – BlackHatSamurai 2012-07-11 23:44:18

回答

3

是的,我知道什麼是錯的。

爲了運行測試,您需要使用test開始測試。所以,你的代碼應該是這樣的:

import android.test.ActivityInstrumentationTestCase2; 
import com.package.sample.MyActivityClass; 
import com.jayway.android.robotium.solo.Solo; 

public class TestSample extends ActivityInstrumentationTestCase2<MyActivityClass> { 
    private Solo solo; 
    public TestSample() { 
     super("com.package.sample", MyActivityClass.class); 
    } 

    protected void setUp() throws Exception { 
     super.setUp(); 
     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    //the test methods MUST begin with test... 
    public void testClickbutton1() throws Exception{ 
     solo.clickOnButton("abc"); 
     solo.setActivityOrientation(Solo.LANDSCAPE); 
     assertTrue(solo.searchText("load")); 
    } 

    @Override 
    protected void tearDown() throws Exception{ 
     solo.finishOpenedActivities(); 
    } 
} 

我有一個類似的問題前一段時間,並Robotium不會有最大的文檔。我希望這可以幫助你:)

+0

+1對我有很大的幫助。但是還有一個問題, Eclipse給我這樣的錯誤:'java.lang.NoClassDefFoundError:com.jayway.android.robotium.solo.Solo at com.MAT.CanadaImmigrationApp.test .SettingTest.setUp在android.test.InstrumentationTestRunner(SettingTest.java:19) 在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 在android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) .onStart(InstrumentationTestRunner.java:529) at android.app.Instrumentation $ InstrumentationThread.run(Instrumentation.java:1448) ' – 2013-02-13 04:25:26

+0

如果您發佈一個新問題和您的代碼會更好。 – BlackHatSamurai 2013-02-13 05:11:19

+0

請檢查這裏http://stackoverflow.com/questions/14846555/java-lang-noclassdeffounderror-com-jayway-android-robotium-solo-solo – 2013-02-13 05:32:13

1

我做的一切都是你說的話,但我仍然有錯誤有0/0 test.I已經找到了解決辦法,這是關係到構造函數:

// I DELETED THIS CONSTRUCTOR 
public TestHomeScreenTest(String pkg, Class<ScreenSlidePagerActivity> activityClass) { 
    super(pkg, activityClass); 
} 


//GOOD SOLUTION:  
public TestHomeScreenTest() { 
    super("com.dolphin.homescreen", ScreenSlidePagerActivity.class); 
} 

和它現在WOOORKS! :)