ひよっこ。

I want to…

Posts Tagged ‘DBUnit’

DBUnitでテストを書いてたらPotential problem found(再修正)

Posted by hikaruworld : 2011 9月 28

DBUnitでテストを書いてたらPotential problem foundの修正が上手くいったと
勘違いしてしまったので再度修正。
ここによると、毎回インスタンスが生成されるのでOverrideしろとのこと。

というわけで、再度修正。

    import org.dbunit.database.IDatabaseConnection;
    import org.dbunit.DatabaseUnitException;
    import java.sql.Connection;
    import org.dbunit.database.DatabaseConnection;
    import org.dbunit.database.DatabaseConfig;
    import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;

    //....

    /**
     * Connection情報を取得する
     * @return 取得されたDatabaseConnection情報
     * @throws ClassNotFoundException {@link ClassNotFoundException}
     * @throws SQLException {@link SQLException}
     * @throws DatabaseUnitException {@link DatabaseUnitException}
     */
    private IDatabaseConnection getConnection() throws DatabaseUnitException {
    	 // SpringFrameworkでsqlSessionFactoryを注入済み
        Connection conn = this.sqlSessionFactory.openSession().getConnection();
        return new DatabaseConnection(conn, this.schemaName) {
            @Override
            public DatabaseConfig getConfig() {
                DatabaseConfig config =  super.getConfig();
                config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new PostgresqlDataTypeFactory());

                return config;
            }
        };
    }

Posted in program | タグ: , , , | Leave a Comment »

DBUnitでテストを書いてたらPotential problem found

Posted by hikaruworld : 2011 6月 2

やっぱりうまくいかなかったので、こちらに追記しています。

発生したのはこんなエラー。

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 ‘PostgreSQL’ (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. L166

なんじゃらほ、と思って調べていると、DBUnitのFAQでこんなことが書いてあることを発見。

というわけで、DatabaseConnectionから取得出来るDatabaseConfigに以下の設定を追加して解決。

DatabaseConfig config = databaseConnection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new PostgresqlDataTypeFactory());

以上です。

Posted in program | タグ: , , , | Leave a Comment »