Java 必须将其显式添加到';注入';您的模块之一中的选项id.apps.ridematch.payments.SetPaymentActivity
我试着运行机器人+匕首 但是我得到了这个错误Java 必须将其显式添加到';注入';您的模块之一中的选项id.apps.ridematch.payments.SetPaymentActivity,java,android,dependency-injection,robolectric,dagger,Java,Android,Dependency Injection,Robolectric,Dagger,我试着运行机器人+匕首 但是我得到了这个错误 1) sendWrongPaymentDetails(com.google.android.apps.ridematch.payments.SetPaymentActivityTest) java.lang.IllegalArgumentException: No inject registered for members/com.google.android.apps.ridematch.payments.SetPaymentActivity. Y
1) sendWrongPaymentDetails(com.google.android.apps.ridematch.payments.SetPaymentActivityTest)
java.lang.IllegalArgumentException: No inject registered for members/com.google.android.apps.ridematch.payments.SetPaymentActivity. You must explicitly add it to the 'injects' option in one of your modules.
at dagger.ObjectGraph$DaggerObjectGraph.getInjectableTypeBinding(ObjectGraph.java:361)
at dagger.ObjectGraph$DaggerObjectGraph.inject(ObjectGraph.java:343)
at com.google.android.apps.common.inject.ActivityInjectHelper.inject(ActivityInjectHelper.java:70)
我补充说:
/**
* Dagger bindings for Ridematch app. Responsible for providing implementations of all injected
* classes.
*/
@Module(
injects = { // Classes that receive injections.
ApiHelper.class,
...
SetPaymentActivity.class,
SetPaymentActivityTest.class,
这是我的测试代码:
@Config(
manifest = "//java/com/google/android/apps/ridematch/AndroidManifest.xml",
qualifiers = "fr-normal-port-hdpi",
sdk = 21,
application = TestApplication.class)
public class SetPaymentActivityTest {
SetPaymentActivity activity;
@Before
public void setUp() throws Exception {
activity = Robolectric.buildActivity(SetPaymentActivity.class)
.create()
.get();
}
@Test
public void sendWrongPaymentDetails() throws Exception {
// SetPaymentActivity activity = Robolectric.buildActivity(SetPaymentActivity.class)
//// .attach()
// .create()
//// .starst()
//// .resume()
//// .visible()
// .get();
activity = Robolectric.setupActivity(SetPaymentActivity.class);
// Shadows.shadowOf(SetPaymentActivity.class);
String url = activity.getUrl();
assertThat(url, equalTo(""));
}
我该如何解决这个问题?您初始化了ObjectGraph吗?我是dagger新手。你能解释一下吗?我没有使用
@Inject
那么为什么我必须在模块中注册SetPaymentActivity
,或者为什么我必须显式初始化图形?@KERiii问道,你能在实例化dagger graph的地方共享代码吗