gpt4 book ai didi

java - 对数据库进行单元测试时遇到多个架构问题

转载 作者:行者123 更新时间:2023-12-01 11:33:38 27 4
gpt4 key购买 nike

我正在使用 HypserSQL DB 和 DBUnit 进行单元测试。不幸的是,我的应用程序连接到多个架构(无法更改)。每当模式名称发挥作用时,我都会得到 org.dbunit.dataset.NoSuchTableException

当我在databaseSchema.sql中使用“CREATE SCHEMA”时,数据集似乎插入得很好;但是,当我的 DAO 尝试提取引用我的架构的内容时,我遇到了异常。

当我在databaseSchema.sql中使用“CREATE USER”时,加载数据集时会抛出异常。

我的测试类的相关部分

@Before
public void setUp() throws Exception {
IDatabaseConnection iDBConn = getConnection();

//Enable
String qualifiedTableNames = "http://www.dbunit.org/features/qualifiedTableNames";
iDBConn.getConfig().setProperty(DatabaseConfig.FEATURE_QUALIFIED_TABLE_NAMES, true);

initSchema();
insertDataSet(iDBConn);
target = new OracleDAO(jdbcConnection, null);
}

protected IDatabaseConnection getConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
jdbcConnection = DriverManager.getConnection("jdbc:hsqldb:mem:fdr", "sa", "");

return new DatabaseConnection(jdbcConnection);
}

protected void initSchema() throws Exception {
FileReader fileReader = new FileReader(new File(this.getClass().getResource("/databaseSchema.sql").getFile()));
BufferedReader br = new BufferedReader(fileReader);
StringBuffer sb = new StringBuffer();
while (br.ready()) {
sb.append(br.readLine());
}

Statement stmt = jdbcConnection.createStatement() ;
String[] queries = sb.toString().split(";");
for (String query : queries) {
stmt.execute(query);
}
}

protected IDataSet insertDataSet(IDatabaseConnection iDBConn) throws Exception {
loadedDataSet = new FlatXmlDataSet(this.getClass().getClassLoader().getResourceAsStream("dataset.xml"));
DatabaseOperation.CLEAN_INSERT.execute(iDBConn, loadedDataSet);
return loadedDataSet;
}

数据库Schema.sql

SET DATABASE SQL SYNTAX ORA TRUE;

CREATE SCHEMA SCHEMA_A;
--Also tried CREATE USER SCHEMA_A pwd;

CREATE TABLE if not exists SCHEMA_A.TBL_1
( "ID" NUMBER,
"OTHER_ID" NUMBER(10,0)
);

数据集.xml

<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<SCHEMA_A.TBL_1 ID="1" other_id="1" />
</dataset>

最佳答案

更新 dbUnit 的 Maven 依赖关系修复了此问题。现在我可以使用多个架构。

<dependency>
<groupId>org.dbunit</groupId>
<artifactId>dbunit</artifactId>
<version>2.5.1</version>
<scope>test</scope>
</dependency>

关于java - 对数据库进行单元测试时遇到多个架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30220040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com