java - 如何在实现另一个类的抽象类中测试函数
问题描述
如果你愿意,你可以给我投反对票。我是mockito的新手。如何使用 mockito 测试扩展另一个类的抽象类的函数。我尝试在下面实现它,但得到了一个 nullPointerException。我知道你不应该使用这样的抽象,但这是一个老团队开发的旧代码,我需要测试我的功能。如果没有可能,请告诉我。
我在
public abstract class AbstractClass implements SomeInterface {
protected final WebServiceClient webServiceClient;
protected final AnotherWebServiceClient anotherWebServiceClient;
public BaseParser(
WebServiceClient webServiceClient,
AnotherWebServiceClient anotherWebServiceClient
) {
this.webServiceClient = webServiceClient;
this.anotherWebServiceClient = anotherWebServiceClient;
}
public functionToTest(String msg) {
System.out.println(msg)
}
我的测试
@InjectMocks
@Spy
private AbstractClass aClass;
@Test
public void testSave() {
AbstractClass spy = Mockito.spy(aClass);
Mockito.doNothing().when((SomeInterface) spy).getId();
spy.functionToTest(any());
verify(spy).functionToTest(any());
}
解决方案
您可以在测试用例中编写该抽象类的匿名实现并测试该类公开该方法。这样,您可以在测试代码中完全对被测代码进行最小的更改(因此不会影响生产代码)。
推荐阅读
- python - 将异常堆栈跟踪从 C++ 传递到 Python(通过 Cython)
- node.js - npm 测试在 Jenkins 中失败,但在本地通过
- node.js - 如何在nodejs中实现php mb_substr()?
- architecture - 我应该在旧版软件文档包中包含哪些类型的文档?
- node.js - NPM - 错误:EPERM:不允许操作,mkdir 'C:\'
- python - 超参数调整后性能更差的 k-NN 模型
- c++ - VS Code 无法识别 make
- algorithm - 在摊销分析中使用潜力和会计方法
- r - 在行总和等于 1 的条件下,所有可能的二进制数据矩阵
- reactjs - 为什么在 ReactJS 中使用 Hooks,onClick={forceUpdate} 可以工作?