我有一个非常简单的测试:

@RunWith(Arquillian.class)
public class SimpleTest
{

    @Inject private SingleEntity singleEntity;

    @Deployment
    public static WebArchive createDeployment()
    {
        return ShrinkWrap.create(WebArchive.class)
            .addClass(SingleEntity.class)
            .addAsWebInfResource(EmptyAsset.INSTANCE, ArchivePaths.create("beans.xml"));
    }

    @Test
    public void categorize()
    {
        assertNotNull(this.singleEntity);
    }
}


我只想注入SingleEntity类型的对象。 SingleEntity是单个POJO:

public class SingleEntity
{
    private String id;
    private String description;

    public SingleEntity(String id, String description) {
        super();
        this.id = id;
        this.description = description;
    }

    //getters & setters
}


之后,我执行gradle test。我配置了测试,以便Arquillian在Wildfly嵌入式实例中执行测试:

<arquillian xmlns="http://jboss.org/schema/arquillian"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

    <container qualifier="jboss" default="true">
        <configuration>
        <!-- Supported property names: [managementPort, username, managementAddress, bundlePath, managementProtocol,
                    cleanServerBaseDir, jbossHome, password, modulePath] -->
            <property name="jbossHome">C:\servers\wildfly-Test-8.2.0.Final</property>
            <property name="modulePath">C:\servers\wildfly-Test-8.2.0.Final\modules\</property>
            <!-- <property name="managementPort">8888</property> -->
        </configuration>
    </container>
</arquillian>


这很简单,但是,我收到一个异常消息,告诉我SingleEntity无法解决:


  由以下原因引起:org.jboss.weld.exceptions.DeploymentException:WELD-001408:具有限定符@Default的SingleEntity类型的依赖关系未得到满足
  
  在注入点[BackedAnnotatedField] @Inject私有com.jeusdi.arquillian.SimpleTest.singleEntity
  
  在com.jeusdi.arquillian.SimpleTest.singleEntity(SimpleTest.java:0)


有任何想法吗?
谢谢大家

最佳答案

通常,您不想注入实体。 JPA基于类名,而CDI使用代理而不是具体类。这导致注入了不同的类。

现在,这只是最佳实践。如果尝试继续前进,您可能仍然会遇到其他错误,但如果一切正确,就不会出现此错误。

您的实体没有定义注释的bean。如果您使用的是CDI 1.2(wildfly 8.2提供),并且bean.xml没有明确列出bean-discovery-mode=all,则不会选择该实体。

10-07 22:45