当前位置: 首页 > 知识库问答 >
问题:

在嵌入式Tomee中使用Arquillian进行测试:如何删除HSQL数据源?

暴骏奇
2023-03-14

我正在尝试使用嵌入式Tomee测试带有Arquillian持久性的会话bean。但Tomee尝试连接到其默认的HSQLDB数据源。

AFAIK,我应该指示Tomee使用注释HSQLDB数据源的tomee.xml。

我如何使用阿奎利安.xml?还是有另一种方法?

我的部署方法:

    @Deployment
public static WebArchive createTestArchive() {
    MavenResolverSystem resolver = Maven.resolver();  
    File[] files = resolver.loadPomFromFile("pom.xml").importRuntimeDependencies().resolve().withTransitivity().asFile();  

    for (File f : files) {
        System.out.println(f.getPath());
    }

    return ShrinkWrap.create(WebArchive.class)
            .addClasses(MyBean.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")
            .addAsManifestResource("persistence.xml", "persistence.xml")
            .addAsLibraries(files);
}

我的persistence.xml:

    <persistence-unit name="oracle">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <properties>
        <property name="hibernate.archive.autodetection" value="class" />
        <property name="hibernate.dialect"
            value="org.hibernate.dialect.OracleDialect"/>
        <property name="hibernate.connection.driver_class" value="oracle.jdbc.driver.OracleDriver" />
        <property name="hibernate.connection.url" value="jdbc:oracle:thin:@localhost:1521:ORADB" />
        <property name="hibernate.connection.username" value="gk2" />
        <property name="hibernate.connection.password" value="qwerty" />
        <!-- <property name="hibernate.show_sql" value="true"/> -->
        <property name="hibernate.flushMode" value="FLUSH_AUTO" />
        <property name="hibernate.hbm2ddl.auto" value="validate" />
    </properties>
</persistence-unit>

我的arquillian.xml:

<container qualifier="tomee" default="true">
    <configuration>
        <property name="httpPort">-1</property>
        <property name="stopPort">-1</property>
        <!--Optional Container Properties -->
        <property name="properties">
        </property>
    </configuration>
</container>

共有1个答案

谭铭
2023-03-14

我发现了问题。

应该在arquillian.xml中配置数据源:

        <property name="properties">
            oracle = new://Resource?type=DataSource
            oracle.JdbcUrl = jdbc:oracle:thin:@localhost:1521:ORADB
            oracle.JdbcDriver = oracle.jdbc.driver.OracleDriver
            oracle.UserName = username
            oracle.Password = password              
            ...
        </property>
 类似资料:
  • 我有一个基于maven的J2EE项目。此项目包含到数据库的连接,该连接是通过资源设置的。xml和持久性。xml。正常部署时,连接工作正常。 我的问题是,我想运行嵌入式TomEE服务器进行集成测试。对于这些测试,我需要使用内存数据库。 要启动TomEE,我使用如下所示的maven插件组合。 当我启动maven goal mvn安装时,服务器按预期运行,但数据库连接错误。我没有找到方法,如何设置,我需

  • 在tome远程上执行具有阿奎利安的测试用例时,我得到以下异常 似乎没有与部署相关的其他异常。使用以下 maven 依赖项 arquillian-junit-container 1.1.9 arquillian-tomee-remote

  • 您好,我尝试在测试前创建数据库schem,但它失败了:/这是我的脚本: 并且当我尝试使用squirell和嵌入式Derby运行该脚本时,它起作用了。 首先,我尝试在类测试之前使用注释@createSchema(“scripts/import.sql”): 接下来尝试使用@applyscriptbefore 第二次我尝试使用脚本: property name=“ScriptStoExecuteBef

  • 问题内容: 使用嵌入式h2数据源以及JUnit(可选),用于集成测试的Spring配置看起来如何? 我第一次尝试使用SingleConnectionDataSource基本上可以成功,但是在更复杂的测试中失败了,在该测试中您需要同时进行多个连接或暂停事务。我认为基于tcp的服务器模式下的 h2 可能也能正常工作,但这可能不是内存中临时嵌入式数据库最快的通信模式。 有哪些可能性及其优势/劣势?另外,

  • 如何配置Spring Boot应用程序,以便在运行单元测试时使用嵌入式SQL Server,从而可以执行存储过程?

  • 这是我的职能。它获得产品的两个参数id和一个名称。使用MySQL命令删除数据库中的一行。我知道在我的代码中有缺失的行,我被卡住了,我不知道如何完成它。我还知道我的SQL行不正确。我不确定组合字符串“name”是否正确。