当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《测试Jersey应用程序,使用JerseyInjection内置框架(HK2)注入类》经验,为你挑选了1个好方法。

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

现在我创建了测试目录(in 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> Paul Samsoth..:

最容易做的事情是刚刚创建的ServiceLocator,并用它来注入测试类,如看这里.例如

public class TheMentionedClassIntegrationTest {

    @Inject
    private TheMentionedClass theMentionedClass;

    @Before
    public void setUp() {
        ServiceLocator locator = ServiceLocatorUtilities.bind(new YourBinder());
        locator.inject(this);
    }

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

你可以选择使用(使)JUnit运行,因为看到这里.

对于其他一些想法,您可能需要查看hk2测试的测试,以及一些用例示例的所有包含项目.


你的答案应该添加到官方文档..谢谢!
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有