Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 必须将其显式添加到';注入';您的模块之一中的选项id.apps.ridematch.payments.SetPaymentActivity_Java_Android_Dependency Injection_Robolectric_Dagger - Fatal编程技术网

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的地方共享代码吗