问题标签 [mockito]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
19408 浏览

java - 如何使用带有类的构造函数来模拟对象?

这是测试:

这些是类:

这是错误:

问题来了:我怎样才能让 PowerMock 找出要寻找的构造函数?

有问题的行suppress. 这就是错误的来源。

0 投票
4 回答
10426 浏览

java - Spring JUnit 和 Mockito - SimpleJdbcTemplate

给定一个扩展 SimpleJdbcDaoSupport 的类,你如何模拟 SimpleJdbcTemplate?

然后,使用 Mockito:

模拟的 JdbcTemplate 被注入,但由于 dao 类依赖 SimpleJdbcTemplate 进行查询(用于映射到对象),并且它是由 SimpleJdbcDaoSupport 在内部构造的 - 模拟 JdcbTemplate 对 SimpleJdbcTemplate 没有影响。那么如何做到这一点,当它没有公共设置器时,并且构造 SimpleJdbcTemplate 的唯一方法是依赖该方法 getSimpleJdbcObject()?

0 投票
3 回答
1148 浏览

mocking - 如何从自定义 Mockito ArgumentMatcher 生成自定义消息?

我正在写一个 ArgumentMatcher,比较的内容归结为:

不幸的是,当没有通过时,Mockito 只是告诉我它失败了。我想添加一条自定义消息,例如“值不匹配”或“名称不匹配”(当然我想提供更多信息,但在我弄清楚这个简单的案例之前,还有什么意义呢?任何进一步)。

以前(在使用 Mockito 之前),我记得匹配器有两种方法 - 一种用于检查匹配,另一种用于生成失败消息(确实,编写这两种方法很痛苦,但我现在想念第二种方法)。

知道怎么做吗?任何帮助表示赞赏!

0 投票
1 回答
116 浏览

mocking - 使用 Mockito 模拟 Java3D 的好方法是什么?

我正在尝试模拟单元测试的 Java3D 类,例如:

或者

不幸的是,VirtualUniverse(也被 Canvas3D 引用)有一个对 MasterControl 的静态引用,其中包括一个方法

在模拟期间调用它并尝试加载外部库,这正是我想要避免的。

我想听听人们使用什么作为模拟的通用方法应用于使用 Java3D 框架的应用程序,特别是如果您找到了一种令人满意的处理 Universe 的方法。

更新:

问了这个问题后发生了几件事。一是我们更多地了解了 Java3D 和 JavaFX 的状态。Java3D 的工作似乎暂时停止,转而专注于 JavaFX。此外,此时 JavaFX 计划在 2011 年第三季度包含 Java API。由于我们现有的代码是基于场景图的,我四处寻找其他场景图范例工具,偶然发现了 jMonkeyEngine (jME),它似乎对我们很有效。

虽然 jME 的应用程序类更喜欢继承而不是组合(参见 com.jme3.app.SimpleApplication),但将委托器插入继承层次结构很容易,允许我以更支持 TDD 的方式创建我们自己的应用程序。此外,jME 团队在避免使用静态行为方面做得很好,这再次有助于为 UT 模拟组件。

因此,我接受 Zsolt 的回答是因为他认为代表团认为他有钱。

0 投票
2 回答
1772 浏览

mockito - 为什么 Mockito 两次调用我的匹配器?

我有一个看起来有点像这样的 Mockito 测试(当然是简化的):

本质上,这个测试试图断言当Blah.create()被调用时,它会将ByteBuffer包含某些数据的FileChannel.

当我运行这个测试时,匹配器被调用了两次。这导致一个BufferUnderflowException.

现在,我可以通过让匹配器在matchesSafely调用开始时存储缓冲区位置并将位置移回最后的位置(在 finally 块中)来解决这个问题,但在我看来,我的匹配器不应该被叫了两次。

任何人都可以对此有所了解吗?

编辑#1:

可能值得注意的是,缓冲区在被传递到通道之前被翻转,因此位置为 0,并且限制设置为写入的数据量。

我已经调试了测试,并且匹配器肯定被调用了两次。

我可以通过在开头标记缓冲区并在结尾重置它来使测试通过matchesSafely(),因此第二次通过匹配器读取相同的数据。这也证实了匹配器被调用了两次,否则它仍然会失败。

编辑#2:

所以看起来这是 Mockito 框架的预期行为。回想起来,我的匹配器有点差,因为它修改了全局状态。我已经修改了匹配器以记录起始位置并在方法结束时返回它matchesSafely()。无论如何,这可能是一个好主意,因为它可以节省修改全局状态。我不使用mark()reset()出于同样的原因。

0 投票
6 回答
3549 浏览

java - Liferay Junit-Mockito 测试

我正在尝试使用 JUNIT 和 Mockito 测试我的 liferay portlet 插件代码。目前我正在模拟服务实现以返回模拟数据并测试功能。

我面临的问题是,我需要测试一些具有以下属性的代码: PropsUtil.get("someKey") 但是当我将它作为独立的 JUNIT 测试运行时,PropsUtil 没有从任何属性文件中读取。有什么方法可以在不更改源代码的情况下从 liferay 属性 (portal*.properties) 文件中读取测试?

0 投票
2 回答
745 浏览

unit-testing - 使用 Mockito 进行验证的正确方法

我有一个方法 - getSomethingAmount() 在我想测试的某个类(A 类)中。这个 getSomethingAmount() 方法逻辑依赖于 Set bSet,它在 A 类初始化时传入构造函数。例如,如果 Set bSet 包含 2 个具有 Status.OK 的对象,则 getSomethingAmount() 必须返回 2。如何使用 Mockito 正确验证此条件?

现在我存根 2 B 类类型对象,将它们放入 bSet 中,然后使用 JUnit 断言断言 getSomethingAmount() 方法结果 - 它可以工作,但在我看来它不像“真正的”Mockito 方式。

0 投票
2 回答
84715 浏览

java - Mockito 测试 void 方法

我有以下要测试的代码:

我需要验证,该方法 acceptFromOffice 确实将状态设置为 0,而不是持久化消息,然后将其状态更改为 1,然后再次持久化。

使用 Mockito,我尝试执行以下操作:

我实际上在这里希望验证将验证两次使用不同 Message 对象状态调用 makePersistent 方法。但它没有说

论据不同!

有什么线索吗?

0 投票
1 回答
13691 浏览

java - 使用 Mockito 时,mock() 和 stub() 有什么区别?

他们似乎都在做同样的事情——为什么你会优先使用一个而不是另一个?

0 投票
1 回答
562 浏览

gwt - 在 GWT 项目中使用 Mockito

我是使用 Mockito 的新手,我正在运行在我们的 GWT 项目中编写的示例测试类。

在某些地方,为了获得我们使用的 Mock,Mockito.mock(SecurityDao.class) 但在同一测试类的其他地方,我们使用“new”关键字实例化其他类。

我认为为了模拟一个类,我需要将接口作为参数传递给 Mockito.mock ,如果我的类没有实现接口,那么我需要使用“new”关键字来实例化该类。

这是正确的吗?我什么时候应该真正使用 Mockito.mock?

谢谢