使用AndroidJunitRunner和Dagger2模拟依赖项错误

使用AndroidJunitRunner和Dagger2模拟依赖项错误,android,dagger-2,android-junit,Android,Dagger 2,Android Junit,我试图模仿中建议的依赖关系 不幸的是,在运行AndroidJunit4测试时,我无法通过以下错误: 测试运行失败:找不到以下的检测信息:ComponentInfo{com.fiscomported.aviationweather.Test/android.support.Test.runner.AndroidJUnitRunner} 我尝试了各种不依赖Android Studio版本的解决方案,但运气不佳 我的应用程序级渐变代码片段是: android { ... defaultConfi

我试图模仿中建议的依赖关系

不幸的是,在运行AndroidJunit4测试时,我无法通过以下错误:

测试运行失败:找不到以下的检测信息:ComponentInfo{com.fiscomported.aviationweather.Test/android.support.Test.runner.AndroidJUnitRunner}

我尝试了各种不依赖Android Studio版本的解决方案,但运气不佳

我的应用程序级渐变代码片段是:

android {
   ...
defaultConfig {
     ...
    testInstrumentationRunner "com.fisincorporated.aviationweather.app.OverrideApplicationTestRunner"
}
...
}
我的OverrideApplicationTestRunner是:

public class OverrideApplicationTestRunner extends AndroidJUnitRunner {
@Override
@NonNull
public Application newApplication(@NonNull ClassLoader cl,
                                  @NonNull String className,
                                  @NonNull Context context)
        throws InstantiationException,
        IllegalAccessException,
        ClassNotFoundException {
    return Instrumentation.newApplication(WeatherApplicationTest.class, context);
}
}
天气应用测试

public class WeatherApplicationTest extends WeatherApplication {

@Override
protected void createDaggerInjections() {
    component = DaggerDiComponent.builder()
            .appModule(new AppModule(this) {
                @Override
                public String providesAppSharedPreferencesName() {
                    return "SHARED_AIRPORT_FUNCTIONAL_TEST";
                }

                public Retrofit provideAppRetrofit() {
                    return new AppRetrofit(new MockInterceptor()).getRetrofit();
                }
            })
            .build();
    component.inject(this);
}
}
机场天气活动测试

@RunWith(AndroidJUnit4.class)
public class AirportWeatherActivityTest {

    @Rule
    public ActivityTestRule<AirportWeatherActivity> mActivityRule =
            new ActivityTestRule<>(AirportWeatherActivity.class, true, false);

    @Test
    public void someTest() {
        Context targetContext = InstrumentationRegistry.getTargetContext();
        Intent intent = new Intent(targetContext, AirportWeatherActivity.class);

        mActivityRule.launchActivity(intent);
        assertThat(mActivityRule.getActivity().airportWeatherViewModel.airportWeatherList.size(),is(0));

    }
}
那个么问题是由使用ActivityTestRule引起的吗


另外,我忘了说我是测试新手,所以如果我遗漏了一些明显的东西,我表示歉意。

将android插件版本切换到
2.2.3
,然后返回
2.3.0
,清理项目和建筑解决了问题。

将android插件版本切换到
2.2.3
,然后返回到
2.3.0
返回,清理项目和建筑解决了问题。

您使用的是2.3.0插件吗?试试2.2.3,我在2.3.0上。所以我切换到了2.2.3,但是在各种表达式上出现了大量的数据绑定错误。在试图解决其中一些问题后,我说,见鬼去吧。我切换回2.3.0。一时兴起,我尝试了我的OverrideApplicationTestRunner,它成功了!所以,要么来回切换Android插件版本真的修复了它,要么我做了一些其他的事情来修复它(例如,我的一个错误,我从不打折,但我真的不知道它是什么)。阿齐兹本基安-如果你想把你的回答作为一个答案,我会给你信用。你在使用2.3.0插件吗?试试2.2.3,我在2.3.0上。所以我切换到了2.2.3,但是在各种表达式上出现了大量的数据绑定错误。在试图解决其中一些问题后,我说,见鬼去吧。我切换回2.3.0。一时兴起,我尝试了我的OverrideApplicationTestRunner,它成功了!所以,要么来回切换Android插件版本真的修复了它,要么我做了一些其他的事情来修复它(例如,我的一个错误,我从不打折,但我真的不知道它是什么)。阿齐兹本基安-如果你想把你的回答作为一个答案,我会给你的信用。
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
    // Context of the app under test.
    Context appContext = InstrumentationRegistry.getTargetContext();

    assertEquals("com.fisincorporated.aviationweather", appContext.getPackageName());
}
}