gpt4 book ai didi

java - 测试反射 newInstance 异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:06 25 4
gpt4 key购买 nike

我在这段代码中使用了一组非常有限的反射:

public NetworkClient createNetworkClient() {
try {
return (NetworkClient) getNetworkClientClass().getConstructors()[0].newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}

我如何测试(使用单元测试)newInstance() throw InvocationTargetException(和其他异常)?

我目前在 UT 的其余部分使用 Mockito 和 Hamcrest。

最佳答案

在您的 junit 测试中的某处,您正在创建 NetworkClient 类的实例。这应该在 setUp() 方法(junit 3)或 @Before 方法(junit 4)中。无论在哪里,将实例包装在 spy()

classToTest = spy(new NetworkClient());

如果您使用的是 NetworkClient 默认构造函数,只需使用 @Spy 注释声明该字段,Mockito 就会作为 spy 为您创建它。

@ spy 私有(private)网络客户端类ToTest;

请务必在 @Before 或 setUp 方法中调用 MockitoAnnotations.initMocks(this); 以使注释生效。

一旦 classToTest 字段是 spy ,您就可以模拟出getConstructors() 类以返回您的测试数组并让第一个构造函数抛出所需的异常。

关于java - 测试反射 newInstance 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36982651/

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