java - 在不继承抽象类的情况下模拟对抽象类的公共(public)方法的调用,最好使用 mockito

标签 java unit-testing junit mocking mockito

我正在使用 JUNIT + Mockito 编写单元测试来测试如下方法:

public someObject methodUnderTest(){
  SomeObject obj = SomeAbstractClass.someMethod();

  if(obj!=null){
    obj.someOtherMethod();
  }

  return someThing;
}

我想模拟上面代码片段中提到的 abstract Class "SomeAbstractClass" 的调用,这样我就可以验证对 "obj"的调用,比如:

verify(SomeAbstractClass).someMethod();
verify(obj).someOtherMethod();

我尝试使用 mockito 功能,例如: Mockito.CALLS_REAL_METHODS Mockito.RETURNS_MOCKS

但由于 SomeAbstractClass 不可用的依赖项,它们无法工作。

注意:

1) SomeObject 是一个接口(interface)。

2) 我需要一种技术来测试上面的代码片段。我被限制使用上面的代码片段,不能更改代码片段。

最佳答案

您可以使用 PowerMock模拟静态和 final方法。

关于java - 在不继承抽象类的情况下模拟对抽象类的公共(public)方法的调用,最好使用 mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10765273/

相关文章:

java - 用 jackson 限制字符串的写入大小

java - akka (java) sender() 方法行为奇怪

java - 如何因 Firebase 存储中的文件大小限制规则而出现拒绝上传错误

java - 添加代码只是为了单元测试接受的做法

python - 我可以让我的所有单元测试都在 Flask 应用上下文中运行吗?

ios - 如何为 Alamofire 请求函数编写单元测试?

unit-testing - NUnit 的 log4Net 问题(已尝试 v2.5.7、2.5.2、2.4.8、2.4.7)

java - JUnit 测试失败时显示用户友好的消息

java.lang.NoClassDefFoundError : com/sun/mail/util/MailLogger for JUnit test case for Java mail

java - 如何创建带有子文件夹的 JUnit TemporaryFolder