gpt4 book ai didi

java - 如何对回调逻辑进行单元测试?

转载 作者:搜寻专家 更新时间:2023-10-30 21:28:42 26 4
gpt4 key购买 nike

更完整的问题是,给定一个需要回调作为参数的依赖项,我如何编写覆盖回调逻辑的单元测试并且仍然设法模拟依赖项?

public class DoStuff {
public void runThis(Runnable callback) {
// call callback
}
}

public class ClassUnderTest {
private DoStuff stuffToDo;

public void methodUnderTest() {
this.stuffToDo.runThis(/*a runnable with some logic*/)
}
}

在上面的示例中,我将模拟 stuffToDo,因为我应该验证方法调用的调用和模拟输出。但是,模拟 runThis 会导致未测试回调逻辑。此外,回调逻辑似乎应该是私有(private)的,所以我不希望直接测试它;也许这是我的误解。

由于回调的使用相当广泛,我希望有一个通用的方法来测试它们,但我还没有找到。

最佳答案

你不能在一个测试中。如果您模拟某些东西,它会被模拟,这意味着它只能验证参数并模拟返回值(您在测试中配置)。

确实,模拟某物的全部意义在于测试隔离使用模拟的东西。如果您想要对 DoStuff 进行单元测试,您不必担心使用某些可能有效或无效的回调实现。您模拟回调,因此您不必担心它。

您仍然可以通过隔离测试回调代码、隔离测试回调用户(使用回调模拟)以及可能通过进行集成测试来获得良好的测试,您可以在其中将完全配置的组件作为一个整体使用。

关于java - 如何对回调逻辑进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7148060/

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