Android-仪器测试期间的模拟方法



假设我的应用程序类别如下:

import android.app.Application;
public class MyApp extends Application {
    public String example(){
        return "Test";
    }
}

我有一些用于测试UI的仪器测试。假设我有以下测试:

public class MyMainActivityTest {
    @Rule
    public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule<>(
            MainActivity.class);
    @Test
    public void firstTest(){
       onView(withId(R.id.textBt)).perform(click());
       // ...
    }
}

我想在MyMainActivityTest内模拟example()方法,假设它应该返回Mock Test而不是Test。如何做?

您应该创建将Application类扩展并放入测试文件夹的类。

    public class MyTestApp extends MyApp {
    public String example(){
        return "SuperTest";
    }
}

然后在您的测试类上使用robolelectric库的@Config注释:

@Config(application = MyTestApp)

这应该适用于包括Espresso UI测试在内的各种测试,如果不是,您可以尝试使用TestApp类使用自定义测试人员:

public class MyRunner extends AndroidJUnitRunner {
  @Override
  public Application newApplication(ClassLoader cl, String className, Context context)
      throws Exception {
    return super.newApplication(cl, MyTestApp.class.getName(), context);
  }
}

并将其放在您的测试课上:@runwith(myrunner.class(

相关内容

  • 没有找到相关文章

最新更新