[英]Testing Jersey app, Injecting classes using Jersey Injection built-in framework (HK2)
我需要為某些類創建測試。 主項目( src/main/java/..
)中的這個類很容易注入到另一個類中,因為我有自定義的ResourceConfig類,它聲明必須掃描哪些包來尋找服務類。
現在我創建了測試目錄(在src/test/java/..
)並創建了一個類,如:
public class TheMentionedClassIntegrationTest {
@Inject
private TheMentionedClass theMentionedClass ;
@Test
public void testProcessMethod() {
assertNotNull(theMentionedClass);
}
}
但問題是無論我做什么,這個類總是空的。 在項目的另一個測試中,我使用的是JerseyTest
類。 所以我試着在這里做同樣的事情,用JerseyTest
擴展TheMentionedClassIntegrationTest
,覆蓋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測試的測試 ,以及一些用例示例的所有包含項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.