java - Junit 和测试方法

标签 java junit

考虑以下代码:

public void methodA(String arg1, String arg2) {
  String resultDB;
  ....process something

  /**do a db call using arg1 - currently the table is not yet
     defined in the db **/
  //String resultDB = result value from db call;
  if (resultDB equals VALUEA)
     do some processing
  }

..further processing using arg1 and arg2
}

当前数据库表不可用,但其余逻辑可以执行。

如何针对各种路径测试此方法。 resultDB 可能等于/或不等于“VALUEA”。无论如何,Junit 中是否有测试包含 resultDB 不是方法参数而是局部变量这一事实的路径。

最佳答案

问题是:resultDB 是如何获取它的值的?!最有可能的是,您正在调用另一个对象的方法。在这种情况下,另一个对象可能需要是一个模拟对象;然后您就可以在测试中指定该模拟的行为。

换句话说:您可以控制 resultDB 的值;然后您可以使用断言来检查您的方法是否按照您期望的各种选项进行操作。

也许值得研究一下“干净代码”原则;我认为你的代码在一种方法中做了太多的事情;并且您的代码依赖于太多驱动方法内路径的参数。基本上,你应该简化整个事情;最好:每种情况一种方法;然后可以轻松测试。

关于java - Junit 和测试方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377137/

相关文章:

java - 代码可读性/习惯做法/设计模式?

Java滑动JPanels

java - 使用 request.getParameter 请求不同的参数

Grails 测试用例失败

java - Android Instrumentation 在使用 AndroidJunitRunner 和 AndroidJUnit4 时测试 java.lang.UnsatisfiedLinkError

java - JUnit 测试期间重复的 log4j 输出

java - Junit参数化测试,不一样的想法

java - Bukkit - 为什么我的 Multimap 没有被通过?

java - 系统时钟的外部更改如何影响 java util 计时器?

java - Mockito 使用模拟对象测试 DAO