我正在为我们的应用程序实现自动化单元测试。我需要做的是能够从测试用例列表中进行选择并执行所述测试。我最初的想法是创建(1)一个独立的应用程序,它引用一个(2)测试库(带有一堆单元测试的android项目),它将调用我们(3)应用程序中的活动。所以我们的课程申请工作正常,如果可能,我不想在那里做任何改变。独立应用程序将作为我们开发人员执行测试的接口。我希望能够向库中添加越来越多的测试。我现在遇到的问题如下。
在库项目中,我有一个基本的LoginTest活动。
public class LoginTest extends InstrumentationTestCase
{
... other class code
@Override
protected void setUp()
{
solo = new Solo(getInstrumentation());
}
}
我的问题是getInstrumentation()
调用始终返回null。在我的图书馆清单中我有
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.matrix.edc.client.android" />
答案 0 :(得分:0)
确保安装了robotium jar。 Solo类属于robotium库。
如果您安装了该软件并且我已经侮辱了您的情报,请尝试将您的班级声明更改为
public class LoginTest extends ActivityInstrumentationTestCase2<YourMainActivity>
并更改
solo = new Solo(getInstrumentation, getActivity());
setUp()
中的。
答案 1 :(得分:0)
您还应该确保在任何获取检测的尝试之前调用super.setUp()。我没有测试过每个子类,但是对于ActivityInstrumentationTestCase2:
@Override
protected void setUp()
{
getInstrumentation(); // returns null
super.setUp()
getInstrumentation(); // returns valid instance
}
答案 2 :(得分:0)
尝试在您的设置中注入检测,如此
public void setUp() throws Exception
{
super.setUp();
injectInstrumentation(InstrumentationRegistry.getInstrumentation());
solo = new Solo(getInstrumentation(), getActivity());
}