首页 文章

Arquillian over Wildfly DeploymentException:WELD-001408:不满意的依赖项

提问于
浏览
1

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

@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:类型为SingleEntity的依赖项不满意,注入点上的限定符@Default [BackedAnnotatedField] @Inject private com.jeusdi.arquillian.SimpleTest.singleEntity at com.jeusdi . arquillian.SimpleTest.singleEntity(SimpleTest.java:0)

有任何想法吗?谢谢大家

1 回答

  • 2

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

    现在这只是最好的做法 . 如果你尝试前进,你可能仍会遇到其他错误,但如果一切正确,你不应该得到这个错误 .

    您的实体没有定义注释的bean . 如果您明确列出 bean-discovery-mode=all ,则不会选择此实体 .

相关问题