Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WELD-SE+;JUnit5 WELD-001409:使用限定符@Default的类型验证程序的依赖项不明确_Java_Cdi_Java Ee 8_Weld Se_Weld Junit5 - Fatal编程技术网

Java WELD-SE+;JUnit5 WELD-001409:使用限定符@Default的类型验证程序的依赖项不明确

Java WELD-SE+;JUnit5 WELD-001409:使用限定符@Default的类型验证程序的依赖项不明确,java,cdi,java-ee-8,weld-se,weld-junit5,Java,Cdi,Java Ee 8,Weld Se,Weld Junit5,我想使用WELD SE with JEE8(CDI 2.0)创建REST资源的单元测试 这是REST资源类的代码: 如何解决这个问题?您的两个方法-createEntityManager()和createValidator()-返回具有类型(Validator.class)的bean。因此,您有两个bean可以注入类型验证器。我认为您将实体管理器键入为验证器是一个错误 作为旁注,在同一测试类上使用@extendedwith(WeldJunit5Extension.class)和@EnableWe

我想使用WELD SE with JEE8(CDI 2.0)创建REST资源的单元测试

这是REST资源类的代码:


如何解决这个问题?

您的两个方法-
createEntityManager()
createValidator()
-返回具有
类型(Validator.class)
的bean。因此,您有两个bean可以注入类型
验证器
。我认为您将实体管理器键入为验证器是一个错误


作为旁注,在同一测试类上使用
@extendedwith(WeldJunit5Extension.class)
@EnableWeld
是多余的
EnableWeld
只是Junit原始语法的缩写。

您的方法-
createEntityManager()
createValidator()
-返回具有
类型(Validator.class)
的bean。因此,您有两个bean可以注入类型
验证器
。我认为您将实体管理器键入为验证器是一个错误

作为旁注,在同一测试类上使用
@extendedwith(WeldJunit5Extension.class)
@EnableWeld
是多余的
EnableWeld
只是Junit原始语法的缩写

@Path("/members")
@RequestScoped
public class MemberResourceRESTService {
    @Inject
    private Logger log;

    @Inject
    private Validator validator;

    @Inject
    private MemberRepository repository;

    @Inject
    MemberRegistration registration;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public List<Member> listAllMembers() {
        log.info("list all members");
        return repository.findAllOrderedByName();
    }
@ExtendWith(WeldJunit5Extension.class)
@EnableWeld
public class MemberTest {

    @WeldSetup
    public WeldInitiator weld = WeldInitiator.from(
            MemberResourceRESTService.class,
            Resources.class,
            WebResources.class,
            MemberRepository.class,
            MemberRegistration.class)
            .addBeans(createValidator(), createEntityManager())
            .activate(RequestScoped.class)
            .build();


    static Bean<?> createValidator() {
        return MockBean.builder()
                .types(Validator.class)
                .scope(ApplicationScoped.class)
                .creating(
//                        Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory().getValidator()
                        Validation.buildDefaultValidatorFactory().getValidator()
                ).build();
    }

    static Bean<?> createEntityManager() {
        return MockBean.builder()
                .types(Validator.class)
                .scope(ApplicationScoped.class)
                .creating(
                        Persistence.createEntityManagerFactory("primary-test").createEntityManager()
                ).build();
    }

    @Test
    @DisplayName("list all mambers test")
    public void list_all_members(MemberResourceRESTService memberResource) {

        final List<Member> members = memberResource.listAllMembers();
        Assertions.assertFalse(members.isEmpty());

    }
org.jboss.weld.exceptions.DeploymentException: WELD-001409: Ambiguous dependencies for type Validator with qualifiers @Default
  at injection point [BackedAnnotatedField] @Inject private it.infocert.shop.rest.MemberResourceRESTService.validator
  at it.infocert.shop.rest.MemberResourceRESTService.validator(MemberResourceRESTService.java:0)
  Possible dependencies: 
  - org.jboss.weld.junit.MockBean@4893b344,
  - org.jboss.weld.junit.MockBean@249e0271