我使用robotium 3.5.1在我的android程序中使用以下代码创建了简单的测试:
protected void setUp() throws Exception {
solo = new Solo(getInstrumentation(), getActivity());
}
protected void tearDown() throws Exception {
solo.finishOpenedActivities();
}
public void testAddTabs() throws Exception {
addTab("TAB1");
addPreset("TAB1");
addTab("TAB2");
addPreset("TAB2");
}
public void addTab(String tabName) throws Exception {
solo.assertCurrentActivity("Checking current Activity",
MainActivity.class);
Log.d("MyTag", solo.getCurrentActivity().getLocalClassName() );
solo.clickOnView(solo.getView(com.sm.scam.R.id.menu_new_tab));
solo.enterText(0, tabName);
solo.clickOnText("OK");
}
public void addPreset(String name) throws Exception {
Log.d("MyTag", solo.getCurrentActivity().getLocalClassName() );
solo.goBackToActivity("MainActivity");
Log.d("MyTag", solo.getCurrentActivity().getLocalClassName() );
solo.clickOnText(name);
solo.clickOnText("New Preset");
Log.d("MyTag", solo.getCurrentActivity().getLocalClassName() );
solo.assertCurrentActivity("Checking current Activity",
PresetActivity.class);
String presetName = "Moti" + 1;
solo.enterText(0, presetName);
solo.pressSpinnerItem(0, 1);
solo.clickOnText("Darkened");
solo.clickOnText("GPS Tag");
solo.clickOnView(solo.getView(com.sm.scam.R.id.menu_save_preset));
}
它只需添加新选项卡,然后在选项卡上按下按钮,更改edittext,微调器和2个开关按钮并保存。 在第一个选项卡中一切正常,但在第二个选项卡中,以下代码:
solo.clickOnText("New Preset");
只是不要做任何事情!
单击此按钮时没有任何反应,它应转发到PresetActivity,因为它在第一个选项卡中正确转发。
错误代码:
junit.framework.ComparisonFailure: Checking current Activity expected:<...Preset...> but was:<...Main...>
at com.jayway.android.robotium.solo.Asserter.assertCurrentActivity(Asserter.java:57)
at com.jayway.android.robotium.solo.Solo.assertCurrentActivity(Solo.java:570)
at com.sm.scam.test.ScamTest.addPreset(ScamTest.java:55)
at com.sm.scam.test.ScamTest.testAddTabs(ScamTest.java:32)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java :186)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1574)
我也试图通过致电:
强迫它solo.goBackToActivity("MainActivity");
但仍然没有。 如果有人帮助我会很感激。谢谢
答案 0 :(得分:1)
TabHost?如果是这样可能是你的问题。 TabHosts涉及打开多个活动,这真的让机器人感到困惑。这是因为robotium只知道它看到的最后一个活动,这意味着在多个活动打开的情况下,它最后看到的活动可能不是你期望的活动。
你可以看到这种情况正在发生,因为它实际上只是在错误的活动上点击任何东西并且没有失败。这就是失败的断言。
答案 1 :(得分:0)
这是因为有时断言会在您的活动加载之前执行。因此,请尝试在assertActivity
之前使用:
solo.waitForActivity(getCurrentActivity().getClass().getSimpleName());
solo.assertCurrentActivity(PresetActivity.class);