0

我已经为我的应用程序构建了一个 Robotium 测试用例。一切都很好,除了我需要手动与我的应用程序交互以使测试开始运行。这意味着我需要去应用程序中的另一个活动,然后测试用例将开始。出于某种原因,我的测试没有在启动时开始。

public class TestApk extends ActivityInstrumentationTestCase2{
private static final String TARGET_PACKAGE_ID= "com.bizzabo.client";
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.bizzabo.client.ui.activities.BzLauncher";
private static Class launcherActivityClass;
static{
    try
    {
        launcherActivityClass=Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
    } catch (ClassNotFoundException e){
        throw new RuntimeException(e);
    }}
public TestApk()throws ClassNotFoundException{
    super( launcherActivityClass);
}
private Solo solo;
@Override
protected void setUp() throws Exception
{
    solo = new Solo(getInstrumentation(),getActivity());

}

public void testInformationMenu() {
    final int INFORMATION_VIEW_NO = 11;

    solo.getCurrentActivity();
    solo.sleep(1000);
    solo.goBack();
    solo.sleep(1000);
    ArrayList<View> viewList = solo.getCurrentViews();
    solo.clickOnView(viewList.get(INFORMATION_VIEW_NO));
    solo.sleep(1000);
    solo.clickOnText("Add Event");
    solo.sleep(1000);
    solo.goBack();
    solo.clickOnView(viewList.get(INFORMATION_VIEW_NO));
    solo.clickOnText("Invite Your Friends");
    solo.sleep(1000);
    solo.goBack();
    solo.clickOnView(viewList.get(10));
    solo.sleep(1000);
    solo.enterText(0, "testbot");
    solo.sendKey(Solo.ENTER);
    solo.sleep(5000);
    solo.clickOnImage(2);
    solo.sleep(1000);
    solo.clickOnText("Join");
    solo.goBack();
    solo.clickOnText("Community");
    solo.sleep(1000);
    solo.clickOnText("Join");
    solo.goBack();
    solo.clickOnText("HERE NOW");
    solo.sleep(1000);
    solo.clickOnText("Check-In");
    solo.sleep(1000);
    solo.goBack();
    solo.clickOnText("Opportunities");
    solo.clickOnText("Messages");
    solo.clickOnText("Offers");
    solo.sleep(1000);
    solo.clickOnText("Event");
    solo.goBack();
    solo.sleep(1000);
    solo.clickOnText("Information");
    solo.clickOnText("Join");
    solo.goBack();
    solo.clickOnText("+ Invite");
    solo.goBack();
    solo.clickOnText("Buzz");
    solo.goBack();
    solo.goBack();
    solo.drag(400, 400, 400, 300, 1);
    solo.sleep(1000);
}

public void tearDown() throws Exception {
    solo.finishOpenedActivities();
}

}

4

3 回答 3

2

我相信它应该像调用你的超类一样简单:

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

public void tearDown() throws Exception {
    solo.finishOpenedActivities();
    super.tearDown();
}

这应该有助于设置所有内容,并且您的测试将正常运行,假设您的类名当然是正确的!

于 2012-11-20T17:39:10.610 回答
0

在这一行中,您编写将开始测试的活动:

LAUNCHER_ACTIVITY_FULL_CLASSNAME="com.bizzabo.client.ui.activities.BzLauncher";

检查您需要开始的正确活动。

于 2012-11-22T20:37:20.797 回答
0

我的申请中有同样的问题。在我的活动中,我有一个显示 gif 动画的自定义视图(webview)。如果我从活动中删除此视图,则测试会在启动时开始。但是,如果存在该视图,则在我手动切换到下一个活动之前不要进行测试。

于 2013-02-22T08:06:57.070 回答