我有一个扩展DaggerAppCompatActivity
的活动,可以使用新的dagger android注入工具对其进行注射
我正在尝试使用Robolectric测试此活动,但测试抛出
java.lang.RuntimeException: android.app.Application does not implement dagger.android.HasActivityInjector
如何禁用匕首2注射以将活动测试为正常活动
测试代码
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class)
public class RegisterActivityTest {
AppCompatActivity activity;
@Before
public void setupActivity() {
activity = Robolectric.setupActivity(RegisterActivity.class);
}
@Test
public void clickingNewAccountText_MakeNewAccountShouldBeVisible() {
TextView registerNewAccountTextView = activity.findViewById(R.id.register_sign_up_textView);
registerNewAccountTextView.performClick();
Button registerNewAccountButton = activity.findViewById(R.id.register_sign_up_button);
assertThat(registerNewAccountButton.getVisibility(), is(View.VISIBLE));
}
}
任何想法如何解决这个问题
答案 0 :(得分:1)
我之前遇到过类似的问题。您发布的错误似乎表明您的活动正在调用AndroidInjection.inject(this)。
您是否定义了自己的实现HasActivityInjector的Application类?
Robolectric将尝试创建您的应用程序的实例 清单中指定的类
在我的案例中,有效的是配置单元测试以包含Android资源:
testOptions{
unitTests{
includeAndroidResources true
}
}
在我的模块build.gradle中,在android {}部分下。