java - 如何模拟一个完整的方法?

标签 java junit mocking

可以模拟一个完整的方法吗?或者我是否必须模拟该方法中的每个服务调用?

这是一个(愚蠢的)例子:

class Foo {
   void update() {
      service1.do();
      service2.do();
      //...
   }
}

class Bar extends Foo {

   void save() {
      super.update();
      // doSometing that I want to test.
   }
}

我想测试 Bar.save() ,并且我想模拟 super.update() 中的所有内容,而不必模拟每个服务本身。那可能吗?

最佳答案

您的 Bar 类是一个 Foo。 Bar 继承了 Foo 的 update 方法。所以你不应该模拟被测类中的方法。选择其中之一会更好:

  • 考虑使用合成,然后自然而然地模拟它。
  • 继承自 FooTest。你有 Foo 的测试,对吧?你有 @Before 设置模拟那里的所有服务。重复使用它。

关于java - 如何模拟一个完整的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598560/

相关文章:

java - 尝试做滑动窗口

java - 我可以禁用 JVM 字符串池吗?

java - 将不同的源目录映射到不同的测试子目录

python-3.x - 如何使用 Python 3.7 模拟 Google API 库进行单元测试

c# - 如何使用 Mock (Moq) 捕获属性值的设置

java - 使用mockito模拟控制台

java - 即使凭据正确,Spring-security 也不会登录用户

java - 用 Java 打印方形图案——差一个错误

junit - 如何使用Maven surefire排除给定类别的所有JUnit4测试?

java - 断言失败错误 : null on boolean method