我需要为某些类创建测试.主项目(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注入测试类?也许我的做法是错的?
谢谢!
最容易做的事情是刚刚创建的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测试的测试,以及一些用例示例的所有包含项目.