Java JdbcTemplate更新查询提供断言错误?

Java JdbcTemplate更新查询提供断言错误?,java,powermock,Java,Powermock,我正在为DAO类编写测试用例,我正在使用JDBC模板和Power mock。在DAO方法中,我调用了两次jdbctemplate方法,然后我得到了一些错误。 请查找下面的代码 JdbcTemplate jt = createStrictMock(JdbcTemplate.class); String sql = "select SQN_ALERTS_CCH_JOB_ID.NEXTVAL from DUAL"; String sqlInsert = "insert into C_ALERTS_CC

我正在为DAO类编写测试用例,我正在使用JDBC模板和Power mock。在DAO方法中,我调用了两次jdbctemplate方法,然后我得到了一些错误。 请查找下面的代码

JdbcTemplate jt = createStrictMock(JdbcTemplate.class);
String sql = "select SQN_ALERTS_CCH_JOB_ID.NEXTVAL from DUAL";
String sqlInsert = "insert into C_ALERTS_CCH_JOB (MSG_ID, MESSAGE, ACTION, ACTION_TM, ERR_DESC, SEQ_NO)"
                        + " values (?,?,?,?,?,?)";
EasyMock.expect(jt.queryForLong(sql)).andReturn(529340l).times(1);
EasyMock.expect(jt.update(sqlInsert, parameters)).andReturn(1).times(1);
PowerMock.replay(jt);
PowerMock.replayAll();
Object[] parameters = new Object[6];
parameters[0] = jt.queryForLong(sql);
jt.update(sql, parameters);
然后,我得到下面的错误

    java.lang.AssertionError: 
Unexpected method call JdbcTemplate.update("insert into C_ALERTS_CCH_JOB (MSG_ID, MESSAGE, ACTION, ACTION_TM,
ERR_DESC, SEQ_NO) values (?,?,?,?,?,?)", [null, null, null, 2015-05-11 19:49:29.585, null, 529340]):
JdbcTemplate.queryForLong("select SQN_ALERTS_CCH_JOB_ID.NEXTVAL from DUAL"): expected: 1, actual: 1
JdbcTemplate.update("insert into C_ALERTS_CCH_JOB (MSG_ID, MESSAGE, ACTION, ACTION_TM, ERR_DESC, SEQ_NO) values (?,?,?,?,?,?)", [null, null, null, 2015-05-11 19:49:29.585, null, 529340]): expected: 1, actual: 0
at org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
at org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
at org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:97)
at org.springframework.jdbc.core.JdbcTemplate$$EnhancerByCGLIB$$6e3c18ec.update(<generated>)
java.lang.AssertionError:
意外的方法调用JdbcTemplate.update(“插入到C_ALERTS_CCH_作业中(MSG_ID、MESSAGE、ACTION、ACTION_TM、,
错误描述,序号值(?,,,,,,,,,,,,,,,,,,,,,,,,,[零,零,零,2015-05-11 19:49:29.585,零,529340]:
JdbcTemplate.queryForLong(“选择SQN\U警报\U CCH\U作业\U ID.NEXTVAL from DUAL”):预期值:1,实际值:1
JdbcTemplate.update(“插入C_ALERTS_CCH_作业(MSG_ID,MESSAGE,ACTION,ACTION_TM,ERR_DESC,SEQ_NO)值(?,,,,,,,,,,,,,),[null,null,null,null,2015-05-11 19:49:29.585,null,529340]:预期值:1,实际值:0
位于org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44)
位于org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94)
位于org.easymock.internal.ClassProxyFactory$MockMethodInterceptor.intercept(ClassProxyFactory.java:97)
在org.springframework.jdbc.core.JdbcTemplate$$enhancerbyglib$$6e3c18ec.update()上

为什么?

您的第二个模拟在预期为1时返回0。。。因此出现断言错误

谢谢您的建议,但我不明白如何解决此问题。请详细说明。在easymock.expect()语句之前,将参数移到更高的位置