我花了很多时间寻找任何答案,但我想我必须问。
我正在使用 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)