Spring Test DBunit警告

我正在使用spring-test-dbunit,我在unit testing中收到一条警告:

码:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/context.xml"}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class, TransactionalTestExecutionListener.class, DbUnitTestExecutionListener.class }) public class TestDB { @Autowired private ICourseService courseService; @Test @DatabaseSetup("sampleData.xml") public void testFind() throws Exception { List courseList = this.courseService.getAllCourses(); assertEquals(1, courseList.size()); assertEquals("A001", courseList.get(0).getCourseNumber()); } } 

警告:

1093 [main] WARN org.dbunit.dataset.AbstractTableMetaData – 发现潜在问题:配置的数据类型factory’class org.dbunit.dataset.datatype.DefaultDataTypeFactory’可能导致当前数据库’MySQL’出现问题(例如某些数据类型可能不会得到适当支持)。 在极少数情况下,您可能会看到此消息,因为支持的数据库产品列表不完整(list = [derby])。 如果是这样,请通过论坛请求java级更新。如果您使用自己的IDataTypeFactory扩展DefaultDataTypeFactory,请确保覆盖getValidDbProducts()以指定支持的数据库产品。

当我使用没有spring-test-dbunit的DBunit时,问题可以解决如下:

  Connection jdbcConnection = DriverManager.getConnection( "jdbc:mysql://localhost/test", "root", "root"); IDatabaseConnection connection = new DatabaseConnection(jdbcConnection); connection.getConfig().setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new MySqlDataTypeFactory()); connection.getConfig().setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new MySqlMetadataHandler()); 

我不知道如何在spring-test-dbunit中解决这个问题。 请帮忙。

问题解决了。 我将以下配置添加到applicationContext.xml(context.xml)。

  classpath:jdbc.properties                 

只是想添加与Java Config相同的解决方案:

 @Bean public DataSource dataSource() { DataSource dataSource = ... return dataSource; } @Bean public DatabaseConfigBean dbUnitDatabaseConfig() { DatabaseConfigBean dbConfig = new com.github.springtestdbunit.bean.DatabaseConfigBean(); dbConfig.setDatatypeFactory(new org.dbunit.ext.h2.H2DataTypeFactory()); return dbConfig; } @Bean public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection() { DatabaseDataSourceConnectionFactoryBean dbConnection = new com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean(dataSource()); dbConnection.setDatabaseConfig(dbUnitDatabaseConfig()); return dbConnection; } 

为了补充现有的答案,我只想使用Spring Boot配置的数据源在Spring Boot上下文中添加对我有用的内容。 在测试源中添加以下类(在将由autoconfig拾取的包中):

 @Configuration public class DBUnitConfig { @Autowired private DataSource dataSource; @Bean public DatabaseDataSourceConnectionFactoryBean dbUnitDatabaseConnection() { DatabaseConfigBean bean = new DatabaseConfigBean(); bean.setDatatypeFactory(new H2DataTypeFactory()); DatabaseDataSourceConnectionFactoryBean dbConnectionFactory = new com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean(dataSource); dbConnectionFactory.setDatabaseConfig(bean); return dbConnectionFactory; } } 

感谢LynnNiño。 答案帮助我纠正了H2数据库的配置: