JUnit Test с InjectionPoint для @Produce по методу для пользовательского квалификатора - PullRequest
0 голосов
/ 20 сентября 2018

Я создал пользовательский классификатор и создал класс с методом для получения значения для него

public class ValueProducer {
    @Produces
    @ConfigurationValue
    public String getStringConfigValue(InjectionPoint ip) {
      ...
    }
}

@ConfigurationValue - мой собственный созданный классификатор.При его использовании все работает нормально, поэтому проблем на этом сайте нет.

Но я не знаю, как эмулировать InjectionPoint для создания правильных модульных тестов.Интерфейс имеет много методов для заполнения при создании реализующего класса.Есть ли простой способ создать такой объект без самостоятельной реализации интерфейса?Я также не нашел ни одного примера, как кто-нибудь тестирует подобные методы.

1 Ответ

0 голосов
/ 20 сентября 2018

Я бы не стал заморачиваться с насмешками, а просто написал бы какие-нибудь интеграционные тесты CDI.Вот пример использования CDI-Unit (для этого вы также можете использовать Arquillian или DeltaSpike test module ):

@RunWith(CdiRunner.class)
@AdditionalClasses({ValueProducerTest.ValueProducer.class})
public class ValueProducerTest {

    @Inject
    @ConfigurationValue
    private String testValue;

    @Test
    public void test() {
        assertEquals(testValue, "Test");
    }

    public static class ValueProducer {
        @Produces
        @ConfigurationValue
        public String getStringConfigValue(InjectionPoint ip) {
            return "Test";
        }
    }

    @Qualifier
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.METHOD, ElementType.FIELD})
    public static @interface ConfigurationValue {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...