2

DbUnit 設定:

DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.FEATURE_SKIP_ORACLE_RECYCLEBIN_TABLES, true);
config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new org.dbunit.ext.oracle.OracleDataTypeFactory());

コード:

@Test
    @DataSet(value="ReportTest.testPropagationToChild.xml", loadStrategy=RefreshLoadStrategy.class)
    public void testPropagationToChild() {

データセット:

<dataset>
    <REPORT ID="-1" NODE_NAME="TG1" NODE_LEVEL="2" PARENT_ID="0" RENA_STATUS="1" PSR_STATUS="1" PSR_AMOUNT="200" RENA_AMOUNT="1000" PSR_LAST_UPDATED_BY="u11" RENA_LAST_UPDATED_BY="u2"/>

テーブル:

 ID     PARENT_ID   NODE_NAME     NODE_LEVEL     RENA_STATUS     RENA_LAST_UPDATED     RENA_LAST_UPDATED_BY     RENA_AMOUNT           PSR_STATUS     PSR_LAST_UPDATED     PSR_LAST_UPDATED_BY     PSR_AMOUNT     RENA_COMMENT     ADDITIONAL_COMMENT

例外:

Caused by: org.dbunit.dataset.NoSuchColumnException: REPORT.PSR_LAST_UPDATED_BY -  (Non-uppercase input column: PSR_LAST_UPDATED_BY) in ColumnNameToIndexes cache map. Note that the map's column names are NOT case sensitive. 

他の列 (ID など) はインポートに問題ありません。Oracle 11g、dbunit 2.4.8 を使用しています

PSR_LAST_UPDATED_BY のインポートに失敗するのはなぜですか? ありがとう!

4

1 に答える 1

0

あなたの例外が何が悪いのかを伝えていると思います:

(大文字以外の入力列: PSR_LAST_UPDATED_BY) (ColumnNameToIndexes キャッシュ マップ内)。マップの列名は大文字と小文字が区別されないことに注意してください。

あなたの列は大文字と小文字が混在して作成されているようです。その場合、辞書にあるのとまったく同じように、二重引用符で囲む必要があります。DBUnit でそれを行う方法がわからない。どうやら、テーブルの列を定義し、大文字の列名を想定する「マップ」がどこかにあるようです。できれば、列の名前をすべて大文字に変更する必要があります。

この SO の質問/回答は、ここで何が起こっていると私が信じているかを示しています。

于 2011-07-14T14:40:11.837 に答える