考虑以下代码:
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/