找不到与Arquillian相关的暴力单位

时间:2015-10-12 09:16:11

标签: jpa glassfish jboss-arquillian

我使用Arquillian和远程Glassfish实例设置了单元测试:

@RunWith(Arquillian.class)
public class ClientTest {

    @EJB
    private ClientService client;

    @Deployment
    public static Archive<?> createDeployment() {

           return ShrinkWrap.create(WebArchive.class, "test.war")
                   .addPackage(Client.class.getPackage())
                   .addPackage(ClientService.class.getPackage())
                   .addPackage(Client_.class.getPackage())
                   .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
                   .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");
    }

    @Test
    public void testCreate() {
        Assert.assertNotNull("Client not null", client);
        Client c = client.getClientById(1L);
        assertNotNull(c);
    }

我的persistence.xml如下所示(适用于开发代码)

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
        http://java.sun.com/xml/ns/persistence
        http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="primary">
        <jta-data-source>jdbc/ora</jta-data-source>
        <properties>
            <property name="eclipselink.logging.level" value="FINEST" />
            <property name="eclipselink.ddl-generation" value="none"/> 
        </properties>
    </persistence-unit>
</persistence>

数据源在远程glassfish-server上配置。但是我总是得到以下例外:

Caused by: java.lang.IllegalStateException: Unable to retrieve EntityManagerFactory for unitName null

3 个答案:

答案 0 :(得分:0)

该行

.addAsResource("test-persistence.xml", "META-INF/persistence.xml")

告诉Shrinkwrap在test / resources文件夹中查找test-persistence.xml文件,并将其添加到META-INF文件夹内的war文件中。

您必须将persistence.xml文件重命名为test-persistence.xml,并确保它在test / resources文件夹中可用

答案 1 :(得分:0)

您也可以直接从源代码中指向您的persistence.xml文件。

.addAsResource("META-INF/persistence.xml")

这应该可以缓解你的问题。

答案 2 :(得分:0)

感谢您的提问。 persistence.xml已正确部署 - 我仔细检查了它。解决方案是重启我的glassfish服务器。不知道为什么,但重启后一切正常。