假设我的应用程序类别如下:
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(