espresso - 如何为自定义测试运行程序声明路径

j2e*_*nue 6 android android-studio android-espresso

我为 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);
  }
}
Run Code Online (Sandbox Code Playgroud)

我已将类放在 androidTest 文件夹中。这可以吗 ?

现在我转到 gradle 文件来更新测试运行程序,然后输入:

testInstrumentationRunner "com.mobile.myapp.base.MyRunner"
Run Code Online (Sandbox Code Playgroud)

(这个路径可以吗?记得我把它放在 androidTest 文件夹中)。

我的一个测试类结构如下所示:

    @RunWith(AndroidJUnit4.class)

public class AuthenticationActivityTest {
//....

@Test
   public void signupWithFacebook() {//...}
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,android studio 说它找不到测试运行器。这是我得到的确切错误:

   Test running failed: Unable to find instrumentation info for:
 ComponentInfo{com.mobile.myapp.labs.test/android.support.test.runner.AndroidJUnitRunner}
Run Code Online (Sandbox Code Playgroud)

请再次注意我的自定义测试运行器位于: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();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我检查生成的 android manifest 时,我看到了这个:

<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>
Run Code Online (Sandbox Code Playgroud)

Bla*_*elt 2

\n

请再次注意我的自定义测试运行程序位于此处:\n androidTest-->java-->com-->mobile-->myapp-->base-->MyRun\xe2\x80\x8c\xe2\x80\x8bner .java

\n
\n\n

然后testInstrumentationRunner是错误的。路径必须与文件的位置匹配

\n\n

testInstrumentationRunner "com.mobile.myapp.base.MyRunner"

\n\n

应该这样做

\n