Junit 如何模拟递归函数
当我测试一个方法时,该方法的内部调用它自己和同一类中的另一个方法。我使用部分模拟来指定另一个方法的返回值,但如何指定第一个方法的返回值?如果模拟该方法,则它不再是递归的,因为模拟只返回递归后返回的最终返回值 如果您想测试递归函数,那么不要模拟递归方法Junit 如何模拟递归函数,junit,powermock,Junit,Powermock,当我测试一个方法时,该方法的内部调用它自己和同一类中的另一个方法。我使用部分模拟来指定另一个方法的返回值,但如何指定第一个方法的返回值?如果模拟该方法,则它不再是递归的,因为模拟只返回递归后返回的最终返回值 如果您想测试递归函数,那么不要模拟递归方法 您的解释有点不清楚,但也许仅仅模仿调用的另一个方法就足以进行测试。您可以确保使用正确的参数调用其他方法。让我们在mock中尝试returnsMany: coEvery{mockEntity.recursiveMethod()}.returnsMan
您的解释有点不清楚,但也许仅仅模仿调用的另一个方法就足以进行测试。您可以确保使用正确的参数调用其他方法。让我们在mock中尝试
returnsMany
:
coEvery{mockEntity.recursiveMethod()}.returnsMany(value1,value2,…)
第一个调用recursiveMethod()将返回值1,然后第二个调用返回值2
以正确的方式处理递归流除了dkatzel所说的,模拟被测类通常是不好的做法。此外,该问题中几乎没有有用的信息来提供有用的响应。示例代码/输出/堆栈跟踪有很长的路要走。帮助我们,帮助你。