如何在测试用例中将对象模拟到android的Application类中?

时间:2017-01-19 11:24:36

标签: android unit-testing automated-tests mockito dagger-2

我正在测试[使用UI Automator]特定任务,其中在创建应用程序类时启动线程。 [onCreate()]。

现在,我已经模拟了整个线程,该线程对应用程序内部发生的一系列任务进行http调用。 [mockedThread]

现在,我使用变量在TEST=true时访问此对象,并在TEST=false进行http调用的正常模式下运行。我只在测试方法中使TEST = true。

现在代码以这种方式工作 -

onCreate() {

  if TEST == true {
    use mock object and update it manually.
    -- mockedObject
  } else if TEST == false {
    use real object and update it using http calls.
    -- real Object 
  }
}

现在我正在尝试使用模拟对象without this if -- else loop of testing = TRUE or FALSE。有没有我们可以用 mockito 或任何其他方式做到这一点......比如 dagger2 或其他什么? [PS:请不要建议Powermock,因为这些不是静态对象]

我试图像这样嘲笑它但不起作用:

testMock() {
 try {
   AndroidApplication application = Mockito.mock(AndroidApplication.class);
   context.startActivity(intent);
   mDevice.wait(Until.hasObject(By.pkg(TARGET_PACKAGE).depth(0)), Constants.LAUNCH_TIMEOUT);
            Mockito.when(application.getThreadObject()).thenReturn(mockObject);
 } catch(MockException m){
    m.printStackTracke();
 }
}

错误我明白了 - 实际上,这个模拟没有互动。

0 个答案:

没有答案