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

如何用Mockito模拟待测类中的私有类成员

壤驷高旻
2023-03-14
public ClassUnderTest(String wlUrl) throws Exception {
try {
    this.url = wlUrl;
    initialize();
} catch (Exception ex) {
    throw ex;
}
private void initialize() throws Exception {
    try {
        PropertyManager.getInstance();
        logAdapter = LogAdapter.getInstance(PropertyManager.getProperty("LOG_CONFIG_FILE"));    
        log20 = new ServerLogging20();
        ds = (javax.sql.DataSource) ctx.lookup(PropertyManager.getProperty("DATASOURCE"));
        setInitialContext(url);
    } catch (Exception e) {
        log.error("ERROR instantiating PropertyManager & LogAdapter  - " + e.getMessage());
        throw e;
    }
}

有什么方法可以模拟这个私有方法来测试我编写的方法吗?

共有1个答案

邢飞雨
2023-03-14

Mockito不支持模仿私有方法。
以下是Mockito常见问题解答的摘录:

为什么Mockito不嘲笑私有方法?

首先,我们并不教条地嘲笑私人方法。我们只是不关心私有方法,因为从测试的角度来看,私有方法并不存在。以下是Mockito不嘲笑私有方法的几个原因:

    null
 类似资料:
  • 使用mockito inline如何测试静态函数(使用stubing其他静态函数)或mock/stub某些内部依赖类? 以下是示例: 具有内部依赖于java的类Util。安全消息摘要 容器类有一些静态函数要测试 希望测试,并将返回为null,以便somettext有望返回。 由于它是静态函数,因此使用powermock进行了测试。 当使用模拟存根时。调用getStringDigest(),返回nu

  • 问题内容: 我是开发的新手,尤其是单元测试的新手。我想我的要求很简单,但是我很想知道其他人对此的想法。 假设我有两个这样的类- 假设我正在编写单元测试到测试方法。但是,假设我想像这样模拟课程。我正在使用Mockito来做到这一点。 我看到模拟未生效,并且断言失败。没有办法模拟我要测试的类的成员变量。? 问题答案: 您需要提供一种访问成员变量的方式,以便您可以进行模拟传递(最常见的方式是使用参数的s

  • 我这样做是为了得到想要的结果

  • 基类 在派生类中不应用组合和其他函数。如果是,我是否应用了错误的模式?我应该如何处理相同的?

  • 下面是从测试中的类调用的类的代码示例 所以我的问题是如何成功地模拟CodeWithAnotherPrivateMethod类的doTheGamble()方法,使其始终返回true?

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