gpt4 book ai didi

java - void 方法应使用哪个测试替身

转载 作者:行者123 更新时间:2023-12-01 20:00:08 25 4
gpt4 key购买 nike

我正在为包含以下内容的方法编写 JUnit 测试:

if (p.toString().contains("abc")) {
cCreds(p);
refMgr();
p = new Path(Utils.rmvTkn(p.toString()));
}

cCreds(p);refMgr(); 调用 void 方法。我实际上并没有测试这些方法,但它们确实在我正在测试的方法中被调用,所以我必须以某种方式处理它们。我知道我需要某种测试替身,但我不确定是什么。我假设它没有使用 when().thenReturn(); 因为实际上没有返回任何内容。

有人可以建议吗?

编辑

我还应该提到,cCreds(p);refMgr(); 也是私有(private)的。

最佳答案

模拟并不是这里要做的事情。
正如这些方法:

cCreds(p);
refMgr();

成为被测类的一部分,您不必模拟它们。

模拟被测类的 publicprivate 方法不太自然。
它通常使测试变得更加脆弱且不太清晰。
Mockito 提供了 spy 概念来实现它,但它应该受到遗留代码的青睐。

在实际实现中,您应该检查的是该方法是否返回或执行了预期的副作用。
您没有显示该方法的完整代码,因此很难给出更具体的指针。

<小时/>

请注意,如果这些方法:

cCreds(p);
refMgr();

依赖一些您需要模拟的其他类来隔离被测组件,您可以重构代码以提取依赖类中的方法。
您可以通过以下方式调用它们:

foo.cCreds(p);
bar.refMgr();

你可以轻松地 mock 他们。

关于java - void 方法应使用哪个测试替身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48289275/

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