在Jersey测试中(使用Grizzly),如何使用基于Java的Spring配置来设置测试上下文?

i5desfxk  于 2023-05-27  发布在  Spring
关注(0)|答案(1)|浏览(127)

我正在使用JAX-RS、Jersey和Spring。
我为我的JAX-RS资源做了这个集成测试。

public class MyResourceIT extends JerseyTest {

    @Override
    protected Application configure() {
        return new ResourceConfig(MyResource.class);
    }

    @Test
    public void getHealth() {
      // some code
    }
}

当我开始测试时,我得到这个错误:

org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from class path resource [applicationContext.xml]; nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cannot be opened because it does not exist
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
    at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196)

我可以创建一个applicationContext.xml文件(请参阅https://stackoverflow.com/a/33323141/3067148),但我更愿意使用基于Spring Java的容器配置来设置我的测试上下文。
如何告诉JerseyTest使用Java Spring上下文配置?

mzaanser

mzaanser1#

它是这样运作的:

public class MyResourceTest extends JerseyTest {

    @Override
    protected Application configure() {
        var resourceConfig = new ResourceConfig(MyResource.class);
        resourceConfig.property(
                "contextConfig", 
                new AnnotationConfigApplicationContext(MySpringTestConfig.class)
        );
        return resourceConfig;
    }

}

相关问题