Weld-Junit5: addPackages не добавляет все содержащиеся компоненты в тестовый контейнер.
Я пытаюсь перейти с Java EE 8 на Jakarta EE 10 и запускаю тест JUnit 5 с помощью Weld. Я создал простой пример с JUnit5, и Weld (cdi) не смог разрешить (внутренние) внедренные классы.
Тест не пройден: WELD-001408: Неудовлетворенные зависимости ...
Пример класса (который внедряет класс SampleHelper):
public class Example {
@Inject
ExampleHelper exampleHelper;
public void getHelloText() {
exampleHelper.greet();
}
}
Пример класса Helper:
public class ExampleHelper {
public void greet() {
System.out.println("Hello");
}
}
Тест JUnit5:
@ExtendWith(WeldJunit5Extension.class)
class ExampleTest {
@WeldSetup
public WeldInitiator weld = WeldInitiator.of(WeldInitiator.createWeld()
.addBeanClass(Example.class)
.addPackages(false, Example.class.getPackage())
);
@Inject
Example example;
@Test
public void test() {
example.getHelloText();
}
}
Я ожидал, что, добавив пакет, можно будет найти и внедрить все классы внутри этого пакета. (Вот как я делал это раньше с JEE8).
Я получаю ошибку:
org.jboss.weld.exceptions.DeploymentException: WELD-001408: Unsatisfied dependencies for type ExampleHelper with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject com.company.wf28test.Example.exampleHelper
at com.company.wf28test.Example.exampleHelper(Example.java:0)
Только если я явно добавлю все внедренные классы по отдельности, Weld сможет их найти.
.addBeanClass(Example.class)
.addBeanClass(ExampleHelper.class)
затем тест проходит
Зависимости:
jakarta.jakartaee-api 10.0.0
junit-jupiter-api 5.9.3
junit-jupiter-engine 5.9.3
weld-junit5 4.0.0.Final
В чем моя ошибка или недоразумение?
1 ответ
Из-за технических и временных ограничений я не могу протестировать это с опубликованными вами версиями библиотек, но я столкнулся с той же проблемой, используяweld-junit5 2.0.0.Final
и мог бы решить эту проблему, опустивgetPackage()
вызов.
то есть ты мог бы попробовать
.addPackages(false, Example.class)
вместо
.addPackages(false, Example.class.getPackage())