我无法运行一个简单的Robotium测试:
public class TapsTest extends ActivityUnitTestCase<Ad> {
public TapsTest() { super(Ad.class); }
Solo mSolo;
@Override
protected void setUp() throws Exception {
super.setUp();
mSolo = new Solo(getInstrumentation(), getActivity());
}
public void testTabTaps() {
assertTrue(mSolo.searchText("Latest")); // NPE thrown here
}
}
此测试与
一致崩溃java.lang.RuntimeException: java.lang.NullPointerException
at com.jayway.android.robotium.solo.Searcher.searchFor(Searcher.java:113)
at com.jayway.android.robotium.solo.Searcher.searchWithTimeoutFor(Searcher.java:68)
at com.jayway.android.robotium.solo.Solo.searchText(Solo.java:442)
在我的两个设备(Android 4.1.0和4.0.3)和ADV上。最初Robotium抱怨缺少V4支持库(我们不需要它用于其他目的)所以我添加了android-support-v13.jar。现在,未发现的类异常已经消失,但NPE仍然存在。我还尝试手动启动活动:
Ad ado = startActivity(new Intent("android.intent.action.MAIN"), null, null);
mSolo = new Solo(getInstrumentation(), ado);
但NPE仍然存在。我尝试mSolo.searchButton("Go")
并且在UI上有一个带有此文本的按钮,它是可见的,并且仍然与Robotium中的第113行相同的NPE。
如果没有测试,应用程序本身就会启动并正确运行。此外,其他ActivityUnitTestCase测试(没有Robotium)运行并传递没有问题。
我尝试使用Robotium website中的robotium-solo-3.6.jar。
答案 0 :(得分:3)
有什么原因,你使用ActivityUnitTestCase? 您应该使用ActivityInstrumentationTestCase2。 然后你必须改变你的构造函数 - 添加包作为参数。 看这里:http://code.google.com/p/robotium/wiki/Getting_Started