【问题标题】:Failed JUnit test when calling Stored Procedure with Spring使用 Spring 调用存储过程时 JUnit 测试失败
【发布时间】:2012-05-08 03:10:44
【问题描述】:

我对 Spring JDBC 很陌生。我有 3 个没有共享数据的 JUnit 测试(不需要之前/之后的方法,因为它们在自己的数据文件中有自己的数据)

这些测试中的每一个都调用包内的存储过程。如果我单独运行测试,它们都通过但运行所有三个,一个失败:(如果我更改类中测试的顺序,失败的一个会更改)

对存储过程的调用使用 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 行

任何建议将不胜感激。

【问题讨论】:

    标签: java plsql oracle11g junit4 spring-jdbc


    【解决方案1】:

    我认为您需要看一下模拟框架。看起来您的单元测试彼此相关。单元测试实际上必须是不相关的,您可以通过使用模拟来实现这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 2012-07-21
      • 1970-01-01
      • 2015-06-23
      • 2011-12-09
      • 2015-09-21
      • 2019-05-01
      相关资源
      最近更新 更多