嗨,我有很多方法可以返回需要进行单元测试的字符串。现在对我来说挑战是如何覆盖代码?例如我的方法如下

Public String getSqlToDoXYZ(Myconfig config) {
StringBuilder sb = new StringBuilder() ;
sb.append(  "SELECT BLAH BLAH");
sb.append("WHERE ABC="+config.getABC());
return sb.toString() ;
}


请给出您的想法如何对这种情况进行单元测试?我正在使用Mockito进行单元测试。我对mockito和单元测试都不熟悉,请指导。提前致谢。

最佳答案

如在其他地方指出的那样,对于SQL注入,对SQL语句使用字符串是危险的。
话虽如此,您只需要调用该方法,并将结果与​​您“手工”构建的String进行比较:

public void testBuildSqlToDoXYZ() throws Exception {

   WhateverYourObjectIs yourObject = new WhateverYourObjectIs();
   MyConfig myConfig = new MyConfig();
   myConfig.setABC("foo");

   String sql = yourObject.getSqlToDoXYZ(myConfig);
   assertEquals("SELECT BLAH BLAH WHERE ABC='foo'", sql);

}


在这种情况下,如果无法手动创建“ MyConfig”对象,则Mockito只会有所帮助。

您的代码中可能还存在其他困难,但您实际上并未向我们提供足够的信息。

07-25 23:25