Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 使用Arquillian和ShrinkWrap在抽象类中使用ShrinkWrap创建部署_Java_Jpa_Jboss Arquillian_Shrinkwrap - Fatal编程技术网

Java 使用Arquillian和ShrinkWrap在抽象类中使用ShrinkWrap创建部署

Java 使用Arquillian和ShrinkWrap在抽象类中使用ShrinkWrap创建部署,java,jpa,jboss-arquillian,shrinkwrap,Java,Jpa,Jboss Arquillian,Shrinkwrap,我试图通过定义一个抽象类来执行测试,这个抽象类将使用Arquillian和ShrinkWrap为每个测试创建一个公共部署。在我的存储库中,我有一个EntityManager,它执行JPA操作。UserRepository和CarRepository是相同的(除了User和Car)。UserRepositoryTest和CarRepositoryTest也一样 但是,CarRepositoryTest会产生某种原因的错误。你能帮帮我吗 公共抽象类AbstractRepositoryTest{ @注

我试图通过定义一个抽象类来执行测试,这个抽象类将使用Arquillian和ShrinkWrap为每个测试创建一个公共部署。在我的存储库中,我有一个EntityManager,它执行JPA操作。UserRepository和CarRepository是相同的(除了User和Car)。UserRepositoryTest和CarRepositoryTest也一样

但是,CarRepositoryTest会产生某种原因的错误。你能帮帮我吗

公共抽象类AbstractRepositoryTest{
@注入
受保护的用户存储库用户存储库;
@注入
受保护的组存储库组存储库;
@注入
受保护的转托管转托管;
保护发电机dg;
受保护的UserRepositoryFindQuery qUser;
受保护的CarRepositoryFindQuery qCar;
@部署
公共静态最终归档createDeployment(){
文件[]libs=Maven
.resolver()
.loadPomFromFile(“pom.xml”)
.resolve(“org.apache.commons:commons-lang3”,
“org.code.datafactory:datafactory”,
“org.dbunit:dbunit”,
“mysql:mysql连接器java”,
“org.slf4j:slf4j api”,
“org.slf4j:slf4j-jdk14”)
.withTransitivity().asFile();
回缩包装
.create(WebArchive.class,“test.war”)
.addAsLibraries(libs)
.addPackage(User.class.getPackage())
.addPackage(UserRepository.class.getPackage())
.addPackage(DummyGenerator.class.getPackage())
.addAsResource(“test persistence.xml”,
“META-INF/persistence.xml”)
.addAsResource(“database test setup.xml”、“database test setup.xml”)
.addasWebInfoResource(EmptyAsset.INSTANCE,“beans.xml”);
}
@以前
public void setUp()引发异常{
重置数据库();
dg=新Dummy发电机();
qUser=new UserRepositoryFindQuery();
qCar=new CarRepositoryFindQuery();
}
// ..
}
@RunWith(Arquillian.class)
公共类CarRepositoryTest扩展了AbstractRepositoryTest{
@试验
公共无效测试部署(){
Assert.assertNotNull(carRepository);
}
@试验
public void testCreateNewCar()引发异常{
Car-Car=dg.getCar();
User=dg.getUser();
car.modifyUser(用户);
//执行
Car createdCar=carRepository.create(Car);
assertNotNull(createdCar);
//核实
qCar.addToRegistrationNumber标准(dg.getLastCars().get(0.getRegistrationNumber());
carRepository.find(qCar);
assertEquals(1,qCar.getResult().size());
assertEquals(dg.getLastCars().get(0),qCar.getResult().get(0));
}
// ..
}
@RunWith(Arquillian.class)
公共类UserRepositoryTest扩展了AbstractRepositoryTest{
@试验
公共无效测试部署(){
Assert.assertNotNull(userRepository);
}
@试验
public void createUser(){
User=dg.getUser();
User createdUser=userRepository.create(用户);
qUser.setUserIdCriteria(dg.getLastUsers().get(0.getUserId());
userRepository.find(qUser);
assertEquals(1,qUser.getResult().size());
assertEquals(qUser.getResult().get(0),createdUser);
}
// ..
}
@无国籍
@本地豆
//@允许的角色({“RegisteredUsers”})
//@TransactionAttribute(TransactionAttributeType.REQUIRED)
公共类CarRepository实现了GenericRepository{
@持久上下文
私人实体管理者;
公共存储库(){
}
@凌驾
公共汽车创建(汽车){
em.persist(car);
返回车;
}
@凌驾
公共汽车改装(汽车){
Car mergedCar=em.merge(Car);
返回合并DCAR;
}
// ..
}
@无国籍
@本地豆
公共类UserRepository实现GenericRepository{
@持久上下文
私人实体管理者;
公共用户存储库(){
}
@凌驾
公共用户创建(用户){
em.persist(用户);
返回用户;
}
@凌驾
公共用户修改(用户){
//em.find(User.class,User.getUserId());
用户mergedUser=em.merge(用户);
返回合并器;
}
// ..
}
//错误日志:

testCreateNewCar(se.while_se.service.jpa.CarRepositoryTest)  Time elapsed: 0.976 sec  <<< ERROR!
javax.ejb.EJBException: Transaction aborted
        at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.discoverUnregisteredNewObjects(RepeatableWriteUnitOfWork.java:304)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:702)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1490)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3143)
        at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:346)
        at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
        at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
        at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435)
        at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855)
        at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5136)
        at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
        at com.sun.proxy.$Proxy2124.create(Unknown Source)
        at se.while_se.service.jpa.__EJB31_Generated__CarRepository__Intf____Bean__.create(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:264)
        at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
        at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)
        at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:260)
        at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:111)
        at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
        at se.while_se.service.jpa.CarRepository$Proxy$_$$_Weld$Proxy$.create(CarRepository$Proxy$_$$_Weld$Proxy$.java)
        at se.while_se.service.jpa.CarRepositoryTest.testCreateNewCar(CarRepositoryTest.java:38)


Results :

Tests in error:
  CarRepositoryTest.testCreateNewCar:38 » EJB Transaction aborted

Tests run: 7, Failures: 0, Errors: 1, Skipped: 0

testCreateNewCar(se.while_se.service.jpa.CarRepositoryTest)经过的时间:0.976秒您可以发布实体的源代码吗?CarRepositoryTest的第38行是什么?
testCreateNewCar(se.while_se.service.jpa.CarRepositoryTest)  Time elapsed: 0.976 sec  <<< ERROR!
javax.ejb.EJBException: Transaction aborted
        at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.discoverUnregisteredNewObjects(RepeatableWriteUnitOfWork.java:304)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:702)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1490)
        at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3143)
        at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:346)
        at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:157)
        at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
        at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435)
        at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855)
        at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5136)
        at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2045)
        at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222)
        at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
        at com.sun.proxy.$Proxy2124.create(Unknown Source)
        at se.while_se.service.jpa.__EJB31_Generated__CarRepository__Intf____Bean__.create(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:264)
        at org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:52)
        at org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:137)
        at org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:260)
        at org.jboss.weld.bean.proxy.EnterpriseBeanProxyMethodHandler.invoke(EnterpriseBeanProxyMethodHandler.java:111)
        at org.jboss.weld.bean.proxy.EnterpriseTargetBeanInstance.invoke(EnterpriseTargetBeanInstance.java:56)
        at org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105)
        at se.while_se.service.jpa.CarRepository$Proxy$_$$_Weld$Proxy$.create(CarRepository$Proxy$_$$_Weld$Proxy$.java)
        at se.while_se.service.jpa.CarRepositoryTest.testCreateNewCar(CarRepositoryTest.java:38)


Results :

Tests in error:
  CarRepositoryTest.testCreateNewCar:38 » EJB Transaction aborted

Tests run: 7, Failures: 0, Errors: 1, Skipped: 0