【问题标题】:Android JUnit tests not detecting in RobotiumAndroid JUnit 测试未在 Robotium 中检测到
【发布时间】:2012-07-09 06:52:54
【问题描述】:

我正在尝试使用 robotsium 运行以下 Android JUnit3 测试:

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 也有与 JUnit4 here 类似的问题。

【问题讨论】:

  • 我正在使用 Android 2.3.3 [API 10]、Junit3、Robotium 3.2.1
  • 得到了问题。 Junit3 出于一些愚蠢的原因(愚蠢,因为它在文档中没有明确提到)期望测试用例名称包含“test*”前缀。
  • 我花了几天时间才弄明白。实际上,我不得不联系创建它的人来解决这个问题。你会认为他们会在他们的文档中提到这一点,但他们没有。

标签: android junit robotium junit3


【解决方案1】:

是的,我知道出了什么问题。

为了运行您的测试,您需要以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 没有最好的文档。我希望这可以帮助你:)

【讨论】:

  • +1 提供了很大的帮助。但是我还有另一个问题,Eclipse 给我错误,例如:java.lang.NoClassDefFoundError: com.jayway.android.robotium.solo.Solo at com.MAT.CanadaImmigrationApp.test.SettingTest.setUp(SettingTest.java:19) 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)
  • 请帮我解决上述问题,谢谢。
  • 我假设你已经明白了,因为你发布的问题已被删除?
【解决方案2】:

我已经按照你说的做了,但是 0/0 测试仍然出错。我找到了解决方案,这与构造函数有关:

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


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

现在很糟糕! :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2018-07-12
    相关资源
    最近更新 更多