gpt4 book ai didi

java - JMockit & 多个本地方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:27:54 24 4
gpt4 key购买 nike

假设我有一个带有方法 x()y()z() 的类 MyClass。假设 x() 调用 y(),而 y() 调用 z()

所以每次我测试 x() 时,y()z() 都会被调用。在模拟 MyClass 的依赖项的情况下,我将不得不模拟 x()y()z() 中的依赖项行为。

因此,如果我对方法 x() 的测试是 testXWhen1()testXWhen2()testXWhen3() 我将不得不在每个测试方法中重复对我的依赖项的期望。最后,我有一些代码对我的三种测试方法重复 y()z() 中发生的事情的期望。有什么解决方案可以避免这种情况?

我的一个想法是尝试测试实际的 x() 方法,但模拟 y()z()。在那种情况下,我的 MyClass 实例应该部分是模拟的,部分是真实的 MyClass。可能吗?

另一个解决方案是严格控制 x() 中的期望值,而不是严格控制 y()z() 中发生的情况...我想我可以用 @NonStrict 而不是 @Mocked 来做到这一点,但这不是我最喜欢的解决方案。

最佳答案

如果你想测试方法 x() 那么你应该模拟方法 y()。在那种情况下就不需要模拟 z() 也是因为你永远不会在 y() 中调用 z() (y 是模拟的)。测试你的 x、y 和 z 方法不同的测试。使用 PowerMock。它有 createPartialMock 方法。

关于java - JMockit & 多个本地方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8485748/

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