测试 Jersey 应用程序,使用 Jersey 注入内置框架注入 类 (HK2)
Testing Jersey app, Injecting classes using Jersey Injection built-in framework (HK2)
我需要为某些 class 创建测试。主项目 (src/main/java/..
) 中的这个 class 很容易注入另一个 classes,因为我有自定义 ResourceConfig class 声明必须扫描哪些包以寻求服务classes.
现在我创建了测试目录(在 src/test/java/..
中)并创建了一个 class,类似于:
public class TheMentionedClassIntegrationTest {
@Inject
private TheMentionedClass theMentionedClass ;
@Test
public void testProcessMethod() {
assertNotNull(theMentionedClass);
}
}
但问题是,无论我做什么,class 始终为空。在项目的另一个测试中,我使用了 JerseyTest
class。所以我尝试在这里做同样的事情,用 JerseyTest
扩展 TheMentionedClassIntegrationTest
,覆盖 configure
方法,创建我的私有 ResourceConfig
class 注册 Binder
(整个项目的默认设置)并注册 TheMentionedClassIntegrationTest
。
没用。我做了很多不同的尝试,但 none 成功了。我认为使用 HK2
非常困难,没有好的文档等等..
你们知道如何将 TheMentionedClass 注入测试 class 吗?也许我的方法是错误的?
谢谢!
最简单的方法就是创建 ServiceLocator
并使用它来注入测试 class,如 所示。例如
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-testing 的测试,以及它的所有包含项目的一些用例示例。
我需要为某些 class 创建测试。主项目 (src/main/java/..
) 中的这个 class 很容易注入另一个 classes,因为我有自定义 ResourceConfig class 声明必须扫描哪些包以寻求服务classes.
现在我创建了测试目录(在 src/test/java/..
中)并创建了一个 class,类似于:
public class TheMentionedClassIntegrationTest {
@Inject
private TheMentionedClass theMentionedClass ;
@Test
public void testProcessMethod() {
assertNotNull(theMentionedClass);
}
}
但问题是,无论我做什么,class 始终为空。在项目的另一个测试中,我使用了 JerseyTest
class。所以我尝试在这里做同样的事情,用 JerseyTest
扩展 TheMentionedClassIntegrationTest
,覆盖 configure
方法,创建我的私有 ResourceConfig
class 注册 Binder
(整个项目的默认设置)并注册 TheMentionedClassIntegrationTest
。
没用。我做了很多不同的尝试,但 none 成功了。我认为使用 HK2
非常困难,没有好的文档等等..
你们知道如何将 TheMentionedClass 注入测试 class 吗?也许我的方法是错误的?
谢谢!
最简单的方法就是创建 ServiceLocator
并使用它来注入测试 class,如
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-testing 的测试,以及它的所有包含项目的一些用例示例。