我为 espresso 创建了一个自定义测试运行器,它看起来像这样:
public class MyRunner extends AndroidJUnitRunner {
@Override
public Application newApplication(ClassLoader cl, String className, Context context)
throws Exception {
return super.newApplication(cl, MyCustomEspressoApplication.class.getName(), context);
}
}
我已将类放在 androidTest 文件夹中。可以吗?
现在我去 gradle 文件更新测试运行器,我把这个:
testInstrumentationRunner "com.mobile.myapp.base.MyRunner"
(这个路径可以吗?记得我把它放在 androidTest 文件夹中)。
我的一个测试类结构如下所示:
@RunWith(AndroidJUnit4.class)
public class AuthenticationActivityTest {
//....
@Test
public void signupWithFacebook() {//...}
}
但是当我运行测试时,android studio 说它找不到测试运行程序。这是我得到的确切错误:
Test running failed: Unable to find instrumentation info for:
ComponentInfo{com.mobile.myapp.labs.test/android.support.test.runner.AndroidJUnitRunner}
请再次注意我的自定义测试运行程序位于此处:androidTest-->java-->com-->mobile-->myapp-->base-->MyRun ner.java
更新:下面是我正在尝试使用的自定义测试运行器:
package com.mobile.myapp.base;
import android.support.test.runner.AndroidJUnitRunner;
import com.squareup.rx2.idler.Rx2Idler;
import io.reactivex.plugins.RxJavaPlugins;
public class MyRunner extends AndroidJUnitRunner {
@Override public void onStart() {
RxJavaPlugins.setInitComputationSchedulerHandler(
Rx2Idler.create("RxJava 2.x Computation Scheduler"));
// etc...
super.onStart();
}
}
当我检查生成的 android list 时,我看到了这个:
<instrumentation
android:name="com.mobile.myapp.base.MyRunner"
android:functionalTest="false"
android:handleProfiling="false"
android:label="Tests for com.mobile.myapp.labs"
android:targetPackage="com.mobile.myapp.labs" />
<application>
<uses-library android:name="android.test.runner" />
</application>
最佳答案
关于android - espresso - 如何为自定义测试运行程序声明路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46766996/