当使用 void 方法调用调用方法时,Mockito doNothing 不起作用

2023-12-19

主班

public class BootSample {

    public int call(int m) {
        System.out.println("Entering into Call Method");
        int n = m*10;
        TestUtil testUtil = new TestUtil();
        testUtil.add(m, n);
        System.out.println("End of Call Method Value n : " + n);
        return n;
    }

}

实用类

public class TestUtil {

    public void add(int a, int b) {
        System.out.println(" Entering into TestUtil Method ");
        int c = a +b;
        System.out.println(" End of TestUtil Method Value : " + c);
    }

}

测试班

@RunWith(MockitoJUnitRunner.class)
public class BootSampleTest {

    @Mock
    TestUtil testUtil; 

    @Before
    public void setup() {

    }

    @Test
    public void utilSuccess() throws Exception {
        BootSample bootSample = new BootSample();
        doNothing().when(testUtil).add(any(Integer.class),any(Integer.class));
        int result = bootSample.call(10); 
        assertEquals(result,100);
    }

}

输出 :

Entering into Call Method
 Entering into TestUtil Method 
 End of TestUtil Method Value : 110
End of Call Method Value n : 100

我正在尝试使用 doNothing 模拟 util void 方法调用,但不起作用。任何人都可以帮我解决方案吗?我在我们的应用程序中遇到了类似的功能。


问题是你的call方法负责创建一个TestUtil对象,并且该对象不能被模拟。尝试添加 TestUtil 作为构造函数参数,如下所示:

public class BootSample {

    private TestUtil testUtil;

    public BootSample(TestUtil testUtil) {
        this.testUtil = testUtil;
    }

    public int call(int m) {
        System.out.println("Entering into Call Method");
        int n = m*10;
        testUtil.add(m, n);
        System.out.println("End of Call Method Value n : " + n);
        return n;
    }
}

然后你需要嘲笑TestUtil类并将模拟传递给BootSample class:

BootSample bootSample = new BootSample(testUtil);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当使用 void 方法调用调用方法时,Mockito doNothing 不起作用 的相关文章

  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在 Spring-JUnit 测试中设置 JNDI 查找?

    我正在使用 Maven 3 0 3 Spring 3 1 0 RELEASE 和 JUnit 4 8 1 如何在容器外部创建 JNDI 功能 在我的例子中是 JBoss 我认为 Spring 的 jndiTemplate 可以解决这个问题
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 获取文件的总大小(以字节为单位)[重复]

    这个问题在这里已经有答案了 可能的重复 java 高效获取文件大小 https stackoverflow com questions 116574 java get file size efficiently 我有一个名为 filenam
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供

随机推荐

  • Rails 按创建日期对记录进行分组

    所以我有一个模型 我想检索记录并按created at字段的日期对它们进行分组 但created at是一个日期时间字段 我只对日期部分感兴趣 所以我正在寻找类似二维数组的东西 第一层是一个以日期字符串为键的哈希 第二层是带有记录的数组 我
  • 我如何子类化 threading.Event?

    在 Python 2 7 5 中 from threading import Event class State Event def init self name super Event self init self name name d
  • Asp.Net MVC 4 中的自定义 URL 路由

    我怎样才能像这个网址一样 http www domain com friend content title http www domain com friendly content title 在 Asp Net MVC 4 中 注意 该参
  • 如何设置GAE环境特定的环境变量?

    我在 Go 中有一个 GAE 应用程序 使用martini https github com go martini martini 我需要能够设置MARTINI ENV环境变量告诉 martini 它应该使用生产设置进行初始化 根据Pyth
  • 仅包含 ASCII 字符的 UNICODE 字符串是否始终等于 ASCII 字符串?

    我注意到以下几点 gt gt gt u abc abc True gt gt gt abc u abc True 这总是正确的还是可能取决于系统区域设置 在 python 3 中字符串似乎是 unicode 例如这个问题 https sta
  • 如何删除 openlayer 中的特定标记

    这是来自 capdragon 更新的新代码 但现在它不会创建标记 我现在不知道如何解决这个问题 我认为代码片段是解决我之前识别标记问题的一种非常聪明的方法 而且它可能是我现在缺少的一个非常小的东西 任何再次帮助将不胜感激
  • 如何创建守护线程?

    java程序员可以手动创建守护线程吗 如何 java lang Thread setDaemon 布尔值 http java sun com javase 6 docs api java lang Thread html setDaemon
  • Boost.Python 和 Boost.Function

    我想包一个boost function类成员 以便可以按以下方式使用它 using namespace boost using namespace boost python struct gui button t function
  • 强制 C++ 函数的用户承认数值常量参数的语义的最佳方法是什么?

    我想编写函数接口来强制用户承认内置常量的语义 例如 我想采取 void rotate float angle Rotate the world by an angle in radians 并将其更改为 void rotate Radian
  • 允许函数指针类型的模板参数接受任何返回类型的函数

    当函数的返回值未被实际使用时 是否有一种方法允许函数指针类型的模板参数接受任何 而不是特定 返回类型的函数 这是一个 MCVE 来说明我的意思 int returnInt int return 0 void returnVoid int t
  • 恢复 scipy.optimize 中的优化?

    scipy optimize 提供了许多不同的方法用于多元系统的局部和全局优化 然而 我需要一个很长的优化运行 可能会被中断 在某些情况下 我可能想故意中断它 有什么办法可以重新启动吗 嗯 有什么办法吗 我的意思是 显然可以提供最后一组最优
  • 对于某些已保存的联系人,CallLog.Calls.CACHED_NAME 始终返回 null

    我试图在我的应用程序中显示通话记录详细信息 但 CallLog Calls CACHED NAME 对于某些联系人始终返回 null 即使它是已保存的带有姓名的联系人 内置通话记录正确显示这些联系人的姓名 这是我的代码 protected
  • jQuery.get() - 实际用途?

    我试图理解你为什么会使用jQuery get and jQuery get index http docs jquery com Core get 文档说它将 jQuery 选择转换为原始 DOM 对象 而不是将选择作为 jQuery 对象
  • 删除元组的智能方法

    我有一个元组列表 如下所述 该元组按第二个值的降序排序 from string import ascii letters myTup zip ascii letters range 10 1 threshold 5 5 gt gt gt m
  • Android:如何处理不准确的气压表?

    我一直在使用三星 Galaxy S3 开发一个应用程序 该应用程序使用气压计来估计用户的海拔高度 我使用 SensorManager getAltitude p0 p 并将 p0 设置为等于最近机场报告的海平面压力 我将 p 设置为等于气压
  • 在 python 中调用超类的 __init__ 时显式传递 Self

    这个问题与帖子有关Python 中的 super 有什么作用 https stackoverflow com questions 222877 how to use super in python 如何初始化基 超 类 https stac
  • 使用 AngularJS 过滤 Firebase 数据

    我在 firebase 中有这样的数据 firebase data JGc5X37NDuvmJylmx0s Object name John Doe age 21 JGnGJlTjyAxFT Vn48Y Object name Jane D
  • 如何在Eclipse中添加字符串资源?

    我可以让 Eclipse 在编码时添加字符串资源吗 还是必须始终切换到 string xml 并添加每个字符串 Eclipse 会帮你做这件事 所以如果你有一个字段 android text hello 选择 hello 然后转到 Refa
  • 在 iOS 中使用控件播放音频

    我制作了一个应用程序tab bar nav bar and table view 在表格视图中 您可以选择收听一些音频 新视图打开 其中有一些控件 例如 播放 暂停 音量滑块 进度滑块 带有当前时间的标签 它有效 但并不完美 我可以播放音频
  • 当使用 void 方法调用调用方法时,Mockito doNothing 不起作用

    主班 public class BootSample public int call int m System out println Entering into Call Method int n m 10 TestUtil testUt