Arquillian不会执行超过4次测试

时间:2015-12-28 08:38:19

标签: jboss-arquillian

这是一个头脑风暴:我有一个Arquillian测试类,有8个测试。如果我一次执行其中的4个,它们都可以工作,但如果我添加一个其他测试,则最后一个测试失败。如果我执行所有8个,则最后4个失败。如果我改变了顺序,那么最后4个仍然失败。没有押韵也没有理由去哪个被执行,哪个失败除了那个。

(如果我将一半的测试放在另一个类中,也是如此。然后这两个类自己执行正常,但如果它们作为相同运行配置的一部分启动,则第二个将失败所有测试。 )

错误发生在@Before方法中,所以这里是:

@PersistenceContext
private EntityManager em;
@Inject
private UserTransaction transaction;

@Before
public void setUp() throws Exception {
  Assert.assertNotNull("EntityManager cannot be null!", this.em);

  this.transaction.begin();
  this.em.createNativeQuery(MY_SCRIPT_1).executeUpdate();
  this.em.createNativeQuery(MY_SCRIPT_2).executeUpdate();
  this.transaction.commit();
}

MY_SCRIPT_X是一堆代码,但相关部分可能是:

-- MY_SCRIPT_1

DROP SCHEMA IF EXISTS scheme1 CASCADE;
DROP SCHEMA IF EXISTS scheme2 CASCADE;
DROP SCHEMA IF EXISTS public CASCADE;
CREATE SCHEMA public;

-- MY_SCRIPT_2

CREATE TABLE scheme1.dbconfig (
  propkey character varying NOT NULL, 
  propvalue character varying NOT NULL, 
  CONSTRAINT dbconfig_pkey PRIMARY KEY (propkey)
);
COMMENT ON TABLE scheme1.dbconfig IS 'global database configuration properties';

INSERT INTO scheme1.dbconfig VALUES
  ('initialized', true),
  ('version', 2);

如果我只使用一个大脚本[em.createNativeQuery(MY_SCRIPT_1 + MY_SCRIPT_2)],则不会发生错误,即使表scheme1.dbconfig仅在其中一个文件中引用。

我得到的所有错误信息是:

  

09:20:18,243 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper](默认任务-24)错误:关系“scheme1.dbconfig”不存在     位置:169

我不知道位置169在哪里(忽略所有注释,第169位应该在propkey的R和O之间,这似乎很奇怪)。但是我在执行完整个类并检测到上述错误后检查了数据库,表scheme1.dbconfig确实存在。

我知道,这是一个奇怪的具体问题,但问题可能是什么(甚至如何进一步调试)?

更多信息:

  • 数据库:PostgreSQL
  • Hibernate :4.3.5
  • 容器:Wildfly 8.1.0.Final

我需要重现错误的是( beans.xml 是一个默认的空文件, persistence.xml 只有{{1} }}):

jta-data-source

2 个答案:

答案 0 :(得分:0)

我在前两年一次又一次地重复这个问题。唯一可靠的工作如下:

  • 使用一个脚本而不是两个;在这种情况下,我会在执行
  • 之前连接这两个文件
  • 每次都没有初始化;我将测试其中一个模式是否存在,并希望并祈祷之前的测试使数据库处于可用状态(使用此模型进行调试祝你好运)

答案 1 :(得分:-1)