我的Android应用程序对我的服务器做了一些http请求.但有时我正在调试在我的开发机器上运行的新api代码.我希望能够传递一些东西(比如环境变量),所以在我的代码中,如果它存在,我将能够使用它作为来自android模拟器的api请求的主机名.
所以我正在寻找一种传递类似的方法:
API_SERVER=http://10.0.2.2/myapp/
Run Code Online (Sandbox Code Playgroud)
在我的代码中我会以某种方式使用它,例如:
final static String API_SERVER_REAL = "http://example.com/";
final String apiServerOverride = System.getenv("API_SERVER");
final String API_SERVER = (null != apiServerOverride && !apiServerOverride.isEmpty() ? apiServerOverride : API_SERVER_REAL);
Run Code Online (Sandbox Code Playgroud) android environment-variables run-configuration android-studio
有没有办法让每个测试都有不同的 testInstrumentationRunner ?我必须Task为它创建一个吗?我的跑步者如下:
class MyTestRunner : AndroidJUnitRunner() {
override fun newApplication(
cl: ClassLoader?,
className: String?,
context: Context?
): Application {
return super.newApplication(cl, MyTestApp::class.java.name, context)
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我想使用真实的应用程序运行一些怎么办?我该如何选择它?
我一直在阅读,在我正在使用它的测试中可以这样做,
@RunWith(AndroidJUnit4ClassRunner::class)但我知道如果我这样做,它需要 defaultConfig 之一
defaultConfig {
testInstrumentationRunner("mypackage.MyTestRunner")
}
Run Code Online (Sandbox Code Playgroud)
但我不能使用它所说的东西Required:KClass<out Runner!>
@RunWith(MyTestRunner::class)
Run Code Online (Sandbox Code Playgroud)
如果我能做到这一点,我就会明白如何使用不同的跑步者。