Java 使用模拟的ResultSet对象为相同的键名获取不同的值

Java 使用模拟的ResultSet对象为相同的键名获取不同的值,java,mockito,junit4,resultset,Java,Mockito,Junit4,Resultset,这是我需要为其编写Junit测试的代码块。使用Junit测试方法执行以下行将导致变量maxLeadInAttach被赋值为值5(如我作为Junit测试用例选项运行调试时在Eclipse变量视图中看到的) 但是,我还需要设置maxLeadinUG的值。在同一Junit测试方法中,我尝试添加重复的一组带有prop_name的行,以读取为MAX_LEADIN_UG,但没有得到预期的结果。我需要设置maxLeadInAttach和maxLeadInUG的值,因为它们需要进一步设置。谁能给我指路吗 Moc

这是我需要为其编写Junit测试的代码块。使用Junit测试方法执行以下行将导致变量maxLeadInAttach被赋值为值5(如我作为Junit测试用例选项运行调试时在Eclipse变量视图中看到的)

但是,我还需要设置maxLeadinUG的值。在同一Junit测试方法中,我尝试添加重复的一组带有prop_name的行,以读取为MAX_LEADIN_UG,但没有得到预期的结果。我需要设置maxLeadInAttach和maxLeadInUG的值,因为它们需要进一步设置。谁能给我指路吗


Mockito.when(statement.executeQuery(Mockito.anyString())).thenReturn(rs);Mockito.when(rs.next()).thenReturn(true).thenReturn(true).thenReturn(false);Mockito.when(rs.getString(“RequestId”))。然后返回(“RequestId”);Mockito.when(rs.getString(“prop_name”))。然后返回(“MAX_LEADIN_附件”)。然后返回(“MAX_LEADIN_UG”);;Mockito.when(rs.getString(“PROP_值”))。然后返回(“5”)。然后返回(“0”)

显然,您想要做的事情无法通过这种方式实现:
maxleadingatach
maxLeadinUG
的赋值基于代码中的一个相同实体,即
常量.PROP_NAME
或者更确切地说
rs.getString(Constants.PROP_NAME)
。您希望通过使用Mockito模拟不一致的数据状态来设置这两个变量-不确定Mockito是否能够做到这一点,但我高度怀疑这是否是您希望生产代码显示的行为;如果您确实需要设置上述两个变量,那么要测试的代码中的另一个点可能更适合使用Mockito进行干预。试着构造一个最简单的代码示例来描述你的问题,并提供更多关于你真正想做什么的细节。
if (rs != null) {
         while (rs.next()) {
                reqID = rs.getString(Constants.REQUEST_ID);                                            

                if (rs.getString(Constants.PROP_NAME).equals(Constants.LOG_PATH)) {
                       logsPath = rs.getString(Constants.PROP_VALUE);
                }


                if (rs.getString(Constants.PROP_NAME).equals("MAX_LEADIN_OH")) {
                       maxLeadinOH =Integer.parseInt(rs.getString(Constants.PROP_VALUE).trim()) ;

                }



                if (rs.getString(Constants.PROP_NAME).equals("MAX_LEADIN_ATTACHMENT")) {
                       maxLeadinAttach =Integer.parseInt(rs.getString(Constants.PROP_VALUE).trim()) ;

                }

               

                if (rs.getString(Constants.PROP_NAME).equals("MAX_LEADIN_UG")) {
                       maxLeadinUG =Integer.parseInt(rs.getString(Constants.PROP_VALUE).trim()) ;
                }

               

                if(rs.getString(Constants.PROP_NAME).equals("MAX_LEADIN_PER_NOI"))
                {
                       maxLeadinPerNoI = Integer.parseInt(rs.getString(Constants.PROP_VALUE).trim());
                }

         }

  }
Mockito.when(statement.executeQuery(Mockito.anyString())).thenReturn(rs); 
Mockito.when(rs.next()).thenReturn(true).thenReturn(false);
Mockito.when(rs.getString("RequestId")).thenReturn("requestId");
Mockito.when(rs.getString("prop_name")).thenReturn("MAX_LEADIN_ATTACHMENT");
Mockito.when(rs.getString("PROP_VALUE")).thenReturn("5");