Java 使用Spring调用存储过程时JUnit测试失败
我对SpringJDBC真的很陌生。我有3个JUnit测试,它们没有共享数据(不需要before/after方法,因为它们在自己的数据文件中有自己的数据) 每个测试都调用包中的存储过程。如果我单独运行测试,它们都通过了,但运行了所有三个测试,其中一个失败:(如果我更改类中测试的顺序,则失败的一个会更改) 对存储过程的调用使用Spring JDBC:Java 使用Spring调用存储过程时JUnit测试失败,java,plsql,oracle11g,junit4,spring-jdbc,Java,Plsql,Oracle11g,Junit4,Spring Jdbc,我对SpringJDBC真的很陌生。我有3个JUnit测试,它们没有共享数据(不需要before/after方法,因为它们在自己的数据文件中有自己的数据) 每个测试都调用包中的存储过程。如果我单独运行测试,它们都通过了,但运行了所有三个测试,其中一个失败:(如果我更改类中测试的顺序,则失败的一个会更改) 对存储过程的调用使用Spring JDBC: SimpleJdbcCall callProcedure = new SimpleJdbcCall(jdbcTemplate)
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);
SimpleJdbcCall callProcedure=newsimplejdbccall(jdbcTemplate)
.withCatalogName(“管理计算”)
.withProcedureName(“获取总计”)
.useInParameterNames(“帐户号”、“请求列表”)
.withoutProcedureRecolumnMetadataAccess()的
.申报参数(
新的SqlParameter(“account_no”,Types.INTEGER),
新的SqlParameter(“请求列表”,OracleTypes.ARRAY,“ADMIN.CALC\u请求选项卡”),
新的SqlOutParameter(“response_list”,OracleTypes.ARRAY,“ADMIN.CALC_response_TAB”);
callProcedure.compile();
Map inputParams=new HashMap();
//设置StructDescriptor和ArrayDescriptor
genericTypeDTO.setStructDescriptorName(“ADMIN.T_CALC_REQUEST_TYPE”);
genericTypeDTO.setArrayDescriptorName(“管理计算请求”选项卡);
输入参数put(“账号”,账号);
inputParams.put(“回拨列表”,genericTypeDTO);
Map outData=(Map)callProcedure.execute(inputParams);
以下是在对其中一个测试执行调用过程时引发的异常。执行(inputParams):
原因:org.springframework.jdbc.badsqlgramarException:
CallableStatementCallback;错误的SQL语法[{调用
管理计算获取_总计(?,?)}];嵌套异常是
java.sql.SQLException:ORA-06533:超出计数的下标ORA-06512:at
“管理计算”,第2160行ORA-06512:第1行
任何建议都将不胜感激。我认为您需要看看模拟框架。看起来您的单元测试是相互关联的。单元测试实际上必须是无关的,您可以通过使用mock来实现这一点