RESTEasy端点的集成测试

RESTEasy端点的集成测试,rest,integration-testing,resteasy,Rest,Integration Testing,Resteasy,我想在REST端点上执行集成测试,但遇到了问题 下面是我的终点。注意:我不能更改这部分代码 @Path("/people") public class PersonResource { private final PersonService personService; @Inject public PersonResource(final PersonService personService) { this.personService = pers

我想在REST端点上执行集成测试,但遇到了问题

下面是我的终点。注意:我不能更改这部分代码

@Path("/people")
public class PersonResource {

    private final PersonService personService;

    @Inject
    public PersonResource(final PersonService personService) {
        this.personService = personService;
    }

    @GET
    @Produces("application/json")
    public List<Person> getPersonList() {
        return personService.getPersonList();
    }
}
但是,这会导致设置方法的最后一行出现以下错误

我研究了注册表API,认为可能应该改用addSingletonResource,所以我将最后一行设置更改为dispatcher.getRegistry.addSingletonResourcepersonResource;并添加了以下内容

@Inject
private PersonResource personResource;
但这会导致安装程序的最后一行出现NullPointerException


对嘲弄的批评没有多大帮助。有人能指出我哪里出了问题吗?谢谢。

你需要做两件事

将无参数构造函数添加到源类: 在测试类中,使用PersonService类的实例初始化PersonResource类: 如果需要,可以模拟PersonService类:

private Dispatcher dispatcher;

@Mock
private PersonService service;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    dispatcher = MockDispatcherFactory.createDispatcher();
    PersonResource resource= new PersonResource(service);
    ispatcher.getRegistry().addSingletonResource(resource);
}
希望有帮助

@Inject
private PersonResource personResource;
    public PersonResource() {
        this(null)
    }
    dispatcher.getRegistry().addSingletonResource(new PersonResource(new PersonService()));
private Dispatcher dispatcher;

@Mock
private PersonService service;

@Before
public void setup() {
    MockitoAnnotations.initMocks(this);
    dispatcher = MockDispatcherFactory.createDispatcher();
    PersonResource resource= new PersonResource(service);
    ispatcher.getRegistry().addSingletonResource(resource);
}