gpt4 book ai didi

java - 使用 Mockito 进行 junit 测试时如何处理 ThirdParty 类的静态方法调用?

转载 作者:行者123 更新时间:2023-11-30 05:18:29 27 4
gpt4 key购买 nike

我在使用 Mockito 测试方法时遇到问题。请检查JunitTestCaseClass的testMethodToBeTested()方法,该方法必须处理第三方类的静态方法调用。

class ClasssToBeTested{

public String methodToBeTested() {
String result = ThirdPartyUtilClass.methodToBeCall();
return result;
}
}

class ThirdPartyUtilClass{

public static String methodToBeCall(){
return "OK";
}
}

// JunitTestCase which will test method "methodToBeTested()" of ClasssToBeTested class
class JunitTestCaseClass{

@InjectMocks
private ClasssToBeTested classsToBeTested;

@Test
public void testMethodToBeTested() {
//How to handle ThirdPartyUtilClass.methodToBeCall(); statement in unit testing
String result = classsToBeTested.methodToBeTested();
Assert.assertNotNull(result);
}
}

请帮忙并提前致谢。

最佳答案

我认为这就是你的答案,为什么它不起作用: https://github.com/mockito/mockito/wiki/FAQ

Mockito 有哪些限制

Mockito 2.x specific limitations

Requires Java 6+
Cannot mock static methods
Cannot mock constructors
Cannot mock equals(), hashCode().

首先,您不应该模拟这些方法。其次,Mockito 定义并依赖于这些方法的具体实现。重新定义它们可能会破坏 Mockito。 模拟只能在 Objenesis 支持的 VM 上进行。不用担心,大多数虚拟机应该可以正常工作。 监视真实方法,其中真实实现通过 OuterClass 引用外部类。这是不可能的。别担心,这种情况极为罕见。

如果您确实想模拟静态方法,那么 PowerMock 就是您的解决方案。 https://github.com/powermock/powermock/wiki/mockito

关于java - 使用 Mockito 进行 junit 测试时如何处理 ThirdParty 类的静态方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59947725/

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