簡體   English   中英

測試Jersey應用程序,使用Jersey Injection內置框架(HK2)注入類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM