2012-04-27 49 views
0

我对Spring JDBC非常陌生。我有没有共享的数据(无前/后置方法需要,因为它们在其自己的数据文件他们自己的数据)3个JUnit测试Spring调用存储过程时失败的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行

任何建议,将不胜感激。

回答

0

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