你可以从引用的Android库中的测试类调用getInstrumentation()吗?

时间:2014-05-01 22:20:07

标签: android instrumentation

我正在为我们的应用程序实现自动化单元测试。我需要做的是能够从测试用例列表中进行选择并执行所述测试。我最初的想法是创建(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" />

3 个答案:

答案 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());
}