2012-04-27 75 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

我認爲你需要看看模擬框架。看起來你的單元測試是相互關聯的。單元測試實際上必須是不相關的,你可以通過使用模擬來實現這一點。