我有一个JavaEE项目,几个月没有改变。使用此配置执行测试:
<dependencies>
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<scope>test</scope>
<version>1.0.0.CR7</version>
</dependency>
</dependencies>
<profile>
<id>arq-jbossas-remote</id>
<activation><activeByDefault>true</activeByDefault></activation>
<dependencies>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-arquillian-container-remote</artifactId>
<version>7.1.0.Final</version>
<scope>test</scope>
</dependency>
</dependencies>
</profile>
JBoss AS 7.1.1.Final "Brontes"
运行良好。
不,我想更新到最新版本的JBoss AS。切换到JBoss EAP 6.1.0.GA (AS 7.2.0.Final-redhat-8)
(以及更新的版本)并将配置文件版本更改为 7.2.0.Final 时,我意识到有几个测试(检查是否允许注意重复的类型代码组合)由于在MySQL数据库中创建了 not 约束而失败。
@Entity
@Table(uniqueConstraints = @UniqueConstraint(columnNames = {"type","code"}))
我还尝试了arquillian-junit-container
的最近版本 1.1.8.Final ,效果相同。
Update1 我正在创建像这样的@Deployment,persistence.xml
是一个常用的hibernate持久性单元。在每个测试周期之前,删除并创建测试数据库,使用hibernate.hbm2ddl.auto=create
创建表。
@Deployment public static Archive<?> createTestArchive()
{
WebArchive wa = ShrinkWrap.create(WebArchive.class, "test.war");
...
wa.addAsResource("test/persistence.xml", "META-INF/persistence.xml");
}
Update2 这是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="test">
<jta-data-source>java:jboss/datasources/DsTest</jta-data-source>
<properties>
<property name="hibernate.show_sql" value="false"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.max_fetch_depth" value="0" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
</properties>
</persistence-unit>
</persistence>