Junit 如何模拟递归函数

Junit 如何模拟递归函数,junit,powermock,Junit,Powermock,当我测试一个方法时,该方法的内部调用它自己和同一类中的另一个方法。我使用部分模拟来指定另一个方法的返回值,但如何指定第一个方法的返回值?如果模拟该方法,则它不再是递归的,因为模拟只返回递归后返回的最终返回值 如果您想测试递归函数,那么不要模拟递归方法 您的解释有点不清楚,但也许仅仅模仿调用的另一个方法就足以进行测试。您可以确保使用正确的参数调用其他方法。让我们在mock中尝试returnsMany: coEvery{mockEntity.recursiveMethod()}.returnsMan

当我测试一个方法时,该方法的内部调用它自己和同一类中的另一个方法。我使用部分模拟来指定另一个方法的返回值,但如何指定第一个方法的返回值?

如果模拟该方法,则它不再是递归的,因为模拟只返回递归后返回的最终返回值

如果您想测试递归函数,那么不要模拟递归方法


您的解释有点不清楚,但也许仅仅模仿调用的另一个方法就足以进行测试。您可以确保使用正确的参数调用其他方法。

让我们在mock中尝试
returnsMany

coEvery{mockEntity.recursiveMethod()}.returnsMany(value1,value2,…)

第一个调用recursiveMethod()将返回值1,然后第二个调用返回值2


以正确的方式处理递归流

除了dkatzel所说的,模拟被测类通常是不好的做法。此外,该问题中几乎没有有用的信息来提供有用的响应。示例代码/输出/堆栈跟踪有很长的路要走。帮助我们,帮助你。