gpt4 book ai didi

java - 该对象已在集成测试中关闭

转载 作者:太空宇宙 更新时间:2023-11-04 11:56:52 25 4
gpt4 key购买 nike

我正在使用spring-test-dbunit来运行集成测试。我想在一个类中使用不同的数据集。

我有BaseRepositoryTest

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = {
"classpath:path/to/context/context.xml"})
@DirtiesContext(classMode = ClassMode.AFTER_CLASS)
@TransactionConfiguration()
public abstract class BaseRepositoryTest extends AbstractTransactionalJUnit4SpringContextTests {
/** Database connection. */
@Autowired
protected IDatabaseConnection databaseConnection;


/**
* Configures database connection.
*/
@PostConstruct
public void initConfig() {
try {
databaseConnection.getConnection().setAutoCommit(true);
} catch (SQLException e) {
// throws exception
}
}

/**
* Load dataset data.
*
* @param datasetPath path to dataset
*/
protected void loadData(String datasetPath) {
try {
IDataSet dataset = new FlatXmlDataSetBuilder()
.setColumnSensing(true)
.build(new ClassPathResource(datasetPath).getFile());
DatabaseOperation.CLEAN_INSERT.execute(databaseConnection, dataset);
} catch (Exception e) {
// throws exception
}
}

BaseAnnotatedRepositoryTest

@DbUnitConfiguration(databaseConnection = { "databaseConnection" })
@TestExecutionListeners(DbUnitTestExecutionListener.class)
public abstract class BaseAnnotatedRepositoryTest extends BaseRepositoryTest {

这是测试

public class PrototypeTest extends BaseAnnotatedRepositoryTest {

private static final String TEST_DATASET =
"testDataset.xml";

@Autowired
private IQuestionRepository repository;

@Test
@DatabaseSetup(TEST_DATASET)
public void testSimple() {
}

@Test
@DatabaseSetup(TEST_DATASET)
public void anotherTestSimple() {
}

}

当我尝试运行测试时,我收到了与该原因相关的错误

org.h2.jdbc.JdbcSQLException: The object is already closed [90007-170]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.message.DbException.get(DbException.java:135)
at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1388)
at org.h2.jdbc.JdbcConnection.checkClosed(JdbcConnection.java:1366)
at org.h2.jdbc.JdbcConnection.setAutoCommit(JdbcConnection.java:406)

如果我将这些测试方法分开 - 例如将每个方法移至其自己的类 - 它工作正常。

最佳答案

当我将 AFTER_CLASS 更改为 AFTER_EACH_TEST_METHOD 时,它开始正常工作。 (虽然时间大大增加)

关于java - 该对象已在集成测试中关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301557/

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