Я потратил много времени на поиск ответов, но думаю, что должен спросить.
Я использую Weld-SE для проверки своих сущностей.
Я подготовил рандомизатор сущностейдля тестирования.
abstract class BaseEntityRandomizer<T extends BaseEntity>
implements Randomizer<T> {
@Override public T getRandomValue() {
...
}
}
class MySomeOtherEntityRandomizer
extends BaseEntityRandomizer<MySomeOther> {
@Override public MySomeOther getRandomValue() {
...
}
}
Теперь, с моим тестовым классом, я хочу внедрить те рандомизаторы, каждый из которых соответствует общим параметрам
@ExtendWith(WeldJunit5Extension.class)
@AddPackages({BaseEntityRandomizer.class})
abstract class BaseEntityTest<T extends BaseEntity> {
@Test void doSome() {
}
@Inject
private BaseEntityRandomizer<T> entityRandomizer;
}
class MySomeOtherTest extends BaseEntityTest<MySomeOther> {
...
// I expect an instance of MySomeOtherRandomizer in injected
// into the entityRandomizer field.
}
Подклассы рандомизаторов и тестов подготовлены.
Но мне не удалось заставить его работать.
Как я могу заставить его работать?
Я пытался со следующим заводским классом
class BaseEntityRandomizerFactory {
@Produces
public BaseEntityRandomizer<MySome> produceMySomeRandomizer() {
return new MySomeRandomizer();
}
}
Я получил
org.jboss.weld.exceptions.IllegalArgumentException:
WELD-001408: Unsatisfied dependencies for type BaseEntityRandomizer<T extends BaseEntity> with qualifiers @Default
at injection point [BackedAnnotatedField] @Inject protected transient ....BaseEntityTest.entityRandomizer
at ....BaseEntityTest.entityRandomizer(BaseEntityTest.java:0)