java - 如何对返回 Java 字符串的方法进行单元测试?

标签 java unit-testing mockito junit4

我有很多返回字符串的方法,我需要对其进行单元测试。现在我面临的挑战是如何进行代码覆盖?例如,我的方法如下所示:

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 注入(inject)而言,使用字符串作为 SQL 语句是危险的。 话虽这么说,您只需调用该方法,并将结果与​​您“手动”构建的字符串进行比较:

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 才会有帮助。

您的代码中可能还有其他内容使这变得困难,但您并没有真正向我们提供足够的信息。

关于java - 如何对返回 Java 字符串的方法进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671382/

相关文章:

java - 在 Mac 上使用 JOCL 的帮助

java - 带有嵌入式 jetty 的 Servlet 3.0 文件上传(@MultipartConfig)

java - Android Studio Robolectric 单元测试 - 默认值无效

java - 测试 AWS SNS 实用程序类

java - Morphia 中的滤波器嵌入式阵列

java - SpringAmqp 拦截器中的处理程序方法名称

javascript - 使用 sinon spy restore 或 reset 的正确方法是什么?

c# - 在单元测试中检查控制台输出

java - 使用 Junit 测试抛出异常的方法

可以为空的 Map 的 Mockito 参数匹配器