Java 使用CDI的RestEasy模拟单元测试

Java 使用CDI的RestEasy模拟单元测试,java,web-services,junit4,resteasy,wildfly-9,Java,Web Services,Junit4,Resteasy,Wildfly 9,我有一个简单的RestEasy Web服务,它需要依赖项 当我通过发布到Wildfly服务器进行测试时,一切正常。但是我试着用JUnit来模拟它。但是,它抛出了空指针异常,因为没有注入依赖项 下面是我已经完成的代码。我做错了什么 WebService import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.MediaType; import javax

我有一个简单的RestEasy Web服务,它需要依赖项

当我通过发布到Wildfly服务器进行测试时,一切正常。但是我试着用JUnit来模拟它。但是,它抛出了
空指针异常
,因为没有注入依赖项

下面是我已经完成的代码。我做错了什么

WebService

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

@Path("/")
public class IlService {

    @Inject
    private il.helper.RequestData rData;

    @GET
    public Response postIds() {

        return Response.status( 200 ).type( MediaType.TEXT_HTML ).entity( rData.getRequestData().get( "logicalOperator" ).asText() ).build();
    }
}
JUnit测试类:

import org.jboss.resteasy.core.Dispatcher;
import org.jboss.resteasy.mock.MockDispatcherFactory;
import org.jboss.resteasy.mock.MockHttpRequest;
import org.jboss.resteasy.mock.MockHttpResponse;
import org.jboss.resteasy.spi.InjectorFactory;
import org.jboss.resteasy.spi.PropertyInjector;
import org.jboss.resteasy.spi.Registry;
import org.jboss.resteasy.spi.ResourceFactory;
import org.jboss.resteasy.spi.ResteasyProviderFactory;
import org.junit.Before;
import org.junit.Test;

import il.helper.RequestData;
import il.services.IlService;
import junit.framework.Assert;

public class IlServiceTest {

    private Dispatcher      dispatcher;
    ResteasyProviderFactory resteasyProviderFactory;
    ResourceFactory         factory;
    InjectorFactory         injectorFactory;
    PropertyInjector        propertyInjector;

    @Before
    public void setUpResource() {

        dispatcher = MockDispatcherFactory.createDispatcher();
        resteasyProviderFactory = dispatcher.getProviderFactory();
        injectorFactory = resteasyProviderFactory.getInjectorFactory();
        propertyInjector = injectorFactory.createPropertyInjector( IlService.class, resteasyProviderFactory );
        propertyInjector.inject( new RequestData() );
        resteasyProviderFactory.setInjectorFactory( injectorFactory );
        Registry registry = dispatcher.getRegistry();
        registry.addSingletonResource( new IlService() );
    }

    @Test
    public void IlServicePost() {

        try {
            MockHttpRequest request = MockHttpRequest.create( "get", "" );
            MockHttpResponse response = new MockHttpResponse();

            dispatcher.invoke( request, response );

            Assert.assertEquals( 200, response.getStatus() );
        } catch ( Exception e ) {
            e.printStackTrace();
        }
    }
}