java - 使用 Mockito 模拟另一个类中的类方法

标签 java unit-testing junit mocking mockito

我正在尝试使用 Mockito/JUnit 为这样的函数编写单元测试:

class1 {
 method {
  object1 = class2.method // method that I want to fake the return value
  // some code that I still want to run
 }
}

在 Mockito 中有什么方法可以 stub class2.method 的结果吗?我正在尝试提高 class1 的代码覆盖率,因此我需要调用其真正的生产方法。

我查看了 Mockito API 的 spy 方法,但这会覆盖整个方法,而不是我想要的部分。

最佳答案

我想我理解你的问题。让我换句话说,你有一个你正在尝试测试的函数,并且想要模拟在该函数内调用的函数的结果,但在不同的类中。我已通过以下方式处理了该问题。

public MyUnitTest {
    private static final MyClass2 class2 = mock(MyClass2.class);

    @Begin
    public void setupTests() {
        when(class2.get(1000)).thenReturn(new User(1000, "John"));
        when(class2.validateObject(anyObj()).thenReturn(true);
    }

    @Test
    public void testFunctionCall() {
        String out = myClass.functionCall();
        assertThat(out).isEqualTo("Output");
    }
}

这样做是在用@Before 注释包装的函数内,我正在设置我希望 class2 中的函数如何响应给定的特定输入。然后,在实际测试中,我只是在要测试的类中调用我要测试的函数。在这种情况下,myClass.functionCall() 正常运行并且您没有覆盖它的任何方法,但您只是模拟它从 MyClass2 中的方法(或方法)获得的输出。

关于java - 使用 Mockito 模拟另一个类中的类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31596913/

相关文章:

java - 使用 GSON 从 JSON 获取数组及其对象

unit-testing - karma-jasmine 在第一次失败后停止单元测试的命令

java - 在 JUnit 测试的 @Before 方法中使用断言语句?

java - 在 JUnit 4 中的相同测试方法下使用多个参数测试相同的异常

java n叉树的深度

java - 为什么 double 无法从我的 String[] 数组中正确解析?

unit-testing - 自动分析/单元测试 NHibernate 行为

java - JUnit 5 测试

java - 尝试将文件上传到 Google Cloud Storage 时出现 FileNotFoundException

java - 测试在整个软件中使用正确的参数调用该方法