当前位置: 首页 > 知识库问答 >
问题:

创建新对象的模拟私有方法

蔺弘
2023-03-14

我编写了一个类,它读取整个文件并返回内容。

class ClassToTest {
    public methodToTest(String input) {
       return privateMethod(input);
    }

    private privateMethod(input) {
        ClassPathResource classPathResource = new ClassPathResource(input);
        IOUtils.toString(classPathResource.getFile());
    }
}
@Test
public void test_methodToTest() {
     mockStatic(IOUtils.class);
     when(IOUtils.toString(any()).thenReturn("DUMMY_STRING");
     methodToTesT("file1.txt");
     ...
}
PowerMockito.whenNew(ClassPathResource.class)
            .withAnyArguments().thenReturn(mockedClassPath);
@PrepareForTest(ClassToTest.class)
class MyTestClass {
... 
}

共有1个答案

钱青青
2023-03-14

您可以将模拟引用传递到构造函数中,执行以下操作:

class ClassToTest {
    private ClassPathResource classPathResource;

    public ClassToTest(ClassPathResource classPathResource) {
        this.classPathResource = classPathResource;
    }

    public methodToTest(String input) {
        IOUtils.toString(classPathResource.getFile(input));
    }
}

或者您可以将模拟引用传递到方法中,执行以下操作:

class ClassToTest {
    public methodToTest(ClassPathResource classPathResource) {
        IOUtils.toString(classPathResource.getFile());
    }
}
 类似资料:
  • 我可以使用Powermock中的,但我想知道Spock有没有办法做到这一点。

  • 我需要模拟从私有方法返回的对象。我在我的项目中与junit和mockito合作。我不能在这里粘贴实际代码,但示例代码如下所示。这里的限制是代码是遗留的,我现在无法重构 要测试的类 道类 测试类别 请帮帮忙

  • 我目前正试图模拟类中的私有final static对象。我的目标似乎没有被恰当地模仿。 示例: 代码:在主类中 嘲笑:在我的测试课上,我有 但是obj不返回我在执行时指定的值 并将实际运行。 任何建议都将是有帮助的,我也不能改变Main类中的任何代码,谢谢。

  • 我有一门课看起来像这样: 我想使用Mockito和Powermock为此编写一个单元测试。我知道我可以这样模仿私有方法: 但是我如何告诉它抛出异常呢?我知道会是这样的: 那里有什么? 请注意,异常是一个私有内部类,因此我不能只执行,因为从单元测试中无法访问。

  • 问题内容: 我有一个关于使用PHPUnit模拟类中的私有方法的问题。让我举一个例子: 我该如何对私有方法的结果进行存根测试以测试公共函数的 更多代码 部分。 问题答案: 通常,您只是不直接测试或嘲笑私有和受保护的方法。 您要测试的是您的类的 公共 API。其他所有内容都是您的类的实现细节,并且如果更改它,则不应“破坏”您的测试。 当您发现“无法获得100%的代码覆盖率”时,这也对您有所帮助,因为您

  • 我正在尝试测试下一种方法: 称为PrivateMethod: asyncTask的执行无法在Mockito的测试中完成,所以我需要以某种方式模拟它。我试着用PowerMock来嘲弄私有方法: 这在PowerMockito行(NullPointerException)中给了我一个异常,它说 方法引发了“org.mockito.exceptions.Misusing.UnfinishedStubbin