测试Jersey应用程序,使用Jersey Injection内置框架(HK2)注入类

时间:2015-12-07 16:46:55

标签: java testing dependency-injection jersey hk2

我需要为某些类创建测试。主项目(src/main/java/..)中的这个类很容易注入到另一个类中,因为我有自定义的ResourceConfig类,它声明必须扫描哪些包来寻找服务类。

现在我创建了测试目录(在src/test/java/..中)并创建了一个类,如:

public class TheMentionedClassIntegrationTest {
    @Inject
    private TheMentionedClass theMentionedClass ;

    @Test
    public void testProcessMethod() {
        assertNotNull(theMentionedClass);
    }
}

但问题是无论我做什么,这个类总是空的。在项目的另一个测试中,我使用的是JerseyTest类。所以我尝试在此处执行相同操作,使用TheMentionedClassIntegrationTest扩展JerseyTest,覆盖configure方法,创建注册ResourceConfig的私有Binder类(默认为整体项目)并注册TheMentionedClassIntegrationTest

它没有用。我做了很多不同的尝试,但没有一个是成功的。我认为与HK2合作极其困难,没有好的文档等等。

你们有没有想过如何将TheMentionedClass注入测试类?也许我的做法是错的?

谢谢!

1 个答案:

答案 0 :(得分:8)

最简单的方法是创建li并使用它来注入测试类,如here所示。例如

ServiceLocator

您也可以使用(制作)JUnit跑步者,如here所示。

对于其他一些想法,您可能希望查看hk2-testing的测试及其包含的一些用例示例。