2015-12-07 2 views
2

Мне нужно создать тесты для некоторого класса. Этот класс в основном проекте (src/main/java/..) легко вводится в другие классы, так как у меня есть собственный класс ResourceConfig, который объявляет, какие пакеты необходимо отсканировать, чтобы искать классы обслуживания.Тестирование приложения Джерси, введение классов, использующих встроенную фреймворк для встраивания Джерси (HK2)

Теперь я создал тестовые каталоги (в 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 в тестовый класс? Может быть, мой подход неправильный?

Спасибо!

+0

Документация для hk2 находится по адресу http://hk2.java.net. Если вам нужна дополнительная или лучшая документация, сообщите нам, чего не хватает и что вы хотели бы видеть. – jwells131313

ответ

5

Проще всего создать только ServiceLocator и использовать его для ввода тестового класса, см. here. Например

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 бегуна, как видно here.

Для некоторых других идей вы можете проверить тесты для hk2-testing и все его содержащие проекты для некоторых примеров использования.

+1

ваш ответ должен быть добавлен в официальную документацию .. спасибо !! – azalut