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
그것을 잘 작동하기 시작했다. (시간이 상당히 증가했지만)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다