问题标签 [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 投票
6 回答
6373 浏览

jsf - 如何使用 mockito 来模拟 facescontext?

如何使用 mockito 模拟 facescontext?

我做了这个虚拟方法:

当我运行 JUnit 测试时,当我调用 getCurrentInstance() 时出现空指针异常。

我如何模拟 facescontext 并编写测试,以确定是否添加了 facesmessage?

0 投票
13 回答
62764 浏览

unit-testing - 对 SLF4J 日志消息进行单元测试的最佳方法是什么?

我正在使用 slf4j,我想对我的代码进行单元测试,以确保在某些条件下生成警告/错误日志消息。我宁愿这些是严格的单元测试,所以我宁愿不必从文件中提取日志配置来测试是否生成了日志消息。我使用的模拟框架是 Mockito。

0 投票
1 回答
2202 浏览

java - 运行单元测试时出现 Spring Context 问题

我正在使用 Spring 和 Mockito 运行一些单元测试。我在 springcontext.xml 中配置了模拟如下:

我的测试类构造如下:

当我运行这个测试时,getBean() 会抛出一个 NPE,因为上下文为空。但是,如果我将测试类重命名为 TestEndpoint (或任何没有字符串'Feature'的东西,它运行得非常好。我对这种行为感到困惑。我已经搜索了所有其他配置文件以查找任何命名冲突,但没有一个有任何包含名称'feature'的bean。关于为什么会发生这种情况的任何线索?

这是抛出异常的跟踪:

谢谢

0 投票
1 回答
235 浏览

java - 部分模拟的替代方案?

厌倦了手工制作的模拟,我正在尝试将 Mockito 引入我的项目。

假设我有一堆数据库访问器,它们隔离给定用例(或服务)的所有 Hibernate 查询。所以我可以有这样的接口RoutingDao,,,UserDaoReportingDao这些接口中的每一个都扩展了一个非常通用Dao的方法,例如commit()rollback()reload(Entity)。对于 Hibernate,后者应该使用当前会话重新加载分离的实体。在测试中,它应该只返回它的参数。

使用手工制作的模拟很容易:我有一个MockDao该方法的通用实现,MockRoutingDao并将扩展MockDao和使用该实现。我在 Mockito 中看到的一种方法是创建MockRoutingDao扩展MockDao并将未模拟的调用委托给它的方法。未继承的方法将使用spy(). 但这很丑 - 我仍然需要手工制作一个模拟,而部分模拟和继承以重用某些实现的整个想法是一团糟。

我该如何改进它?为可以在许多测试中重用的模拟方法创建共享实现的最佳实践是什么?

0 投票
3 回答
21305 浏览

java - Mockito 不是在模拟一个电话

我正在测试的功能之一是连接到一台机器上。我想模拟 ping 方法,它实际上试图 ssh 进入机器,因为我并没有真正 ssh 进入机器。

我正在测试的课程:

测试类是这样的:

问题是当我在本地运行它们时,它们工作得很好,但在我们的自动构建系统上,它似乎实际上是在调用真正的 ping 并获得身份验证异常。我将使用 mock() 而不是 spy() ,因为我读过它有点奇怪,但我只是不明白它实际上是在调用该方法有什么不同!只是想知道是否其他人有任何见解。

0 投票
2 回答
1669 浏览

unit-testing - Mocking 中的依赖项太多:单元测试问题

我想做一个业务类的测试,但我遇到了这个问题:其中一个模拟对象对其他类有很多依赖关系,例如 Sites、URL 和 ComplexObject。

我的问题是:如果我必须在我需要测试的方法中使用我的模拟对象的这个方法,我该如何隔离我的类?我应该模拟所有这些并将它们添加到模拟对象吗?

0 投票
2 回答
9588 浏览

java - PowerMock Mockito:如何模拟所有静态方法?

使用 PowerMock(使用 Mockito)时,我们是否需要模拟类的所有静态方法?我的意思是,假设我们有:

我的问题是,如果我需要模拟 getInstance 方法,是否也需要模拟“anotherStaticMethod”?

PowerMock 版本:1.3,Mockito 版本:1.8

0 投票
4 回答
32537 浏览

java - PowerMock:模拟静态方法(+在某些特定方法中返回原始值)

我使用 PowerMock 1.4.7 和 JUnit 4.8.2

我只需要模拟一些静态方法,我希望其他方法(来自同一个类)只是返回原始值。当我模拟mockStatic并且不调用when().doReturn()所有静态方法时,返回它们的默认值——比如返回 Object 时为 null 或返回 boolean 时为 false ......等等。所以我尝试 thenCallRealMethod在每个静态方法上显式使用来返回默认实现(意味着没有模拟/没有假货),但我不知道如何在每个可能的参数变化上调用它(=我想要每个可能的输入调用原始方法)。我只知道如何模拟具体的论点变化。

0 投票
3 回答
8131 浏览

java - 测试调用本机方法的代码

我有这样的课:

请注意getBar()是用 JNI 实现的,并且该类是final。我想编写一个 junit 测试来测试toString()方法。为此,我需要模拟getBar()方法,然后运行原始的toString()方法来检查输出。

我的第一个想法是这一定是不可能的,但后来我发现PowerMock支持根据功能列表测试最终类和本机方法。但到目前为止,我还没有成功。我管理的最好的事情是模拟整个类,但随后测试测试了模拟的toString()方法而不是真正的方法,这没有多大意义。

那么如何使用 PowerMock 从上面测试这个toString()方法呢?我更喜欢将 PowerMock 与Mockito一起使用,但如果这不可能,我可以使用EasyMock来代替。

0 投票
2 回答
1131 浏览

java - mockito - 伪造 addObserver

我从 mockito 开始,想知道如何伪造添加观察者。我想编写一个测试来确保观察者计数在函数调用后增加。

示例测试代码:

由于 adm 是一个模拟,我知道我必须定义逻辑addObserver但我不知道要做什么 - when(adm.addObserver(Observer o)).then(?)