0

私はSpring JDBCに本当に慣れていません。共有データを持たない3つのJUnitテストがあります(独自のデータファイルに独自のデータがあるため、前後のメソッドは必要ありません)

これらの各テストは、パッケージ内のストアド プロシージャを呼び出します。テストを個別に実行すると、すべて合格しますが、3つすべてを実行すると、1つが失敗します:(クラス内のテストの順序を変更すると、失敗したテストが変更されます)

ストアド プロシージャの呼び出しでは、Spring JDBC を使用します。

 SimpleJdbcCall callProcedure = new SimpleJdbcCall(jdbcTemplate)
                .withCatalogName("ADMIN.CALCULATE")
                .withProcedureName("GET_TOTALS")
                .useInParameterNames("account_no", "request_list")
                .withoutProcedureColumnMetaDataAccess()
                .declareParameters(
                        new SqlParameter("account_no", Types.INTEGER),
                        new SqlParameter("request_list", OracleTypes.ARRAY, "ADMIN.CALC_REQUEST_TAB"),
                        new SqlOutParameter("response_list", OracleTypes.ARRAY, "ADMIN.CALC_RESPONSE_TAB"));
        callProcedure.compile();
        Map<String, Object> inputParams = new HashMap<String, Object>();
        // set StructDescriptor and ArrayDescriptor
        genericTypeDTO.setStructDescriptorName("ADMIN.T_CALC_REQUEST_TYPE");
        genericTypeDTO.setArrayDescriptorName("ADMIN.CALC_REQUEST_TAB");
                   inputParams.put("account_no", accountNo);
        inputParams.put("clawback_list", genericTypeDTO);
        Map<String, Object> outData = (Map<String, Object>) callProcedure.execute(inputParams);

以下は、いずれかのテストでcallProcedure.execute(inputParams)を実行したときにスローされる例外です。

原因: org.springframework.jdbc.BadSqlGrammarException: CallableStatementCallback; 不適切な SQL 文法 [{call ADMIN.CALCULATE.GET_TOTALS(?, ?, ?)}]; ネストされた例外は java.sql.SQLException です: ORA-06533: サブスクリプトがカウントを超えています ORA-06512: "ADMIN.CALCULATE"、2160 行目 ORA-06512: 1 行目

アドバイスをいただければ幸いです。

4

1 に答える 1

0

モック フレームワークを確認する必要があると思います。単体テストが互いに関連しているようです。単体テストは実際には無関係である必要があり、モックを使用してこれを実現できます。

于 2012-04-27T11:07:01.010 に答える