假设我的Application类如下:
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());
// ...
}
}
我想在example()
内模仿MyMainActivityTest
方法,让我们说它应该返回Mock Test
而不是Test
。怎么做?
答案 0 :(得分:1)
您应该创建扩展Application
类并将其放入测试文件夹的类。
public class MyTestApp extends MyApp {
public String example(){
return "SuperTest";
}
}
然后在您的测试类中使用Robolectric库中的@Config
Annotation:
@Config(application = MyTestApp)
这适用于所有类型的测试,包括Espresso UI测试,如果您不能尝试将自定义TestRunner与您的TestApp类this一起使用:
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);
}
}
将它放在Test类上: @RunWith(MyRunner.class)