java - Spring 测试 DBunit 警告

标签 java junit junit4 dbunit spring-test-dbunit

我正在使用 spring-test-dbunit,我在我的单元测试中收到警告消息:

代码:

@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<Course> courseList = this.courseService.getAllCourses();

        assertEquals(1, courseList.size());
        assertEquals("A001", courseList.get(0).getCourseNumber());
    }

}

警告:

1093 [main] WARN org.dbunit.dataset.AbstractTableMetaData - Potential problem found: The configured data type factory 'class org.dbunit.dataset.datatype.DefaultDataTypeFactory' might cause problems with the current database 'MySQL' (e.g. some datatypes may not be supported properly). In rare cases you might see this message because the list of supported database products is incomplete (list=[derby]). If so please request a java-class update via the forums.If you are using your own IDataTypeFactory extending DefaultDataTypeFactory, ensure that you override getValidDbProducts() to specify the supported database products.

当我使用没有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) 。

<property name="location">
        <value>classpath:jdbc.properties</value>
    </property> 
</bean>  

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${driver}" />
    <property name="url" value="${url}" />
    <property name="username" value="${username}" />
    <property name="password" value="${password}" />
</bean>

<bean id="sqlDataTypeFactory" class ="org.dbunit.ext.mysql.MySqlDataTypeFactory" />

<bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
     <property name = "datatypeFactory" ref = "sqlDataTypeFactory" />
</bean> 
<bean id="dbUnitDatabaseConnection" class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean">
    <property name="databaseConfig" ref="dbUnitDatabaseConfig"/>
    <property name="dataSource" ref="dataSource" />
</bean>

关于java - Spring 测试 DBunit 警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27652689/

相关文章:

java - 为什么 Java8 flatmap 返回一个 List of List?

java - 使用 Java 注解访问类属性的值

java - Eclipse 因 LauncherFactory 的 NoClassDefFoundError 导致使用 JUnit 5 未找到测试

java - Android Junit 测试位图资源

eclipse - 如何使用 Gradle 在 Gluon 项目中设置 JUnit 测试

java - Runtime.exec - 适合 'echo' '但不适用于猫...

java - 当我的应用程序失去连接时,我应该如何恢复它?

java - 运行集成测试时嵌入 MongoDB

java - JUnit测试数据库重复记录异常

java - 使用 JUnit 比较两个 TreeMap