gpt4 book ai didi

loops - Mockito 模拟一个无限循环的方法

转载 作者:行者123 更新时间:2023-11-28 19:59:20 25 4
gpt4 key购买 nike

我有一个方法如下

public class ClientClass {

public void clientMethod() {
while(true){
doSomethings.....
}
}
}

我正在尝试使用 mockito 进行测试。我能够调用 clientMethod,但由于 clientMethod 中有一个 while(true),调用永远不会返回,我也永远不会到达我的 assert 语句,这些语句(当然)发生在 clientMethod() 调用之后。有没有办法在我的测试用例进行一次循环迭代后停止循环?

最佳答案

从技术上讲,您不能在不从内部抛出异常的情况下打破测试中的无限循环。如果循环中有什么东西可以模拟,那么它可能会为你产生一个异常。

当您发现自己处于这种情况时,当测试需要笨拙的解决方法时,就该停下来思考一下设计了。不可测试的代码通常难以维护,而且不言自明。所以我的建议是摆脱无限循环并引入适当的循环条件。毕竟,没有应用程序会永远存在。

如果您仍然确信无限循环是到达此处的最佳方式,那么您可以执行轻微的分解以使事情更易于测试:

public class ClientClass {

// call me in production code
public void clientMethod() {
while(true){
doSomethings();
}
}

// call me in tests
void doSomethings(){
// loop logic
}
}

关于loops - Mockito 模拟一个无限循环的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18771844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com