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