问题标签 [jmock]

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 回答
123 浏览

java - 在期望中自定义传入参数的格式

我正在使用 jmock 来模拟一个 OutputStream 并对写入它的数据设置期望。

所以我有一个看起来像这样的期望

( byteArrayMatching) 是自定义匹配器的工厂。

这一切都很好,除非测试失败,因为被测类写入了不正确的数据,我得到一个看起来像这样的错误:

通过查看字节序列很难确定数据到底出了什么问题(我还没有开始记住 ASCII)。这几乎迫使我在调试器中运行测试以找出问题所在。

我的问题是:有没有办法以某种方式注册各种格式化程序与模拟对象或模拟对象可以漂亮地打印参数值?很明显,jmock 已经在做一些漂亮的打印,因为上面不是 的输出byte[].toString(),但是我在 API 文档中找不到任何建议定制这种漂亮打印逻辑的方法

0 投票
3 回答
984 浏览

java - Junit4/Jmock2 缺乏支持基类

我们终于将我们的单元测试代码库从 JUnit 3 迁移到了 JUnit 4。我们还大量使用了 JMock 2。

在 JUnit 3 中,JMock 为您的测试提供了一个有用的基类 (MockObjectTestCase),它本身也是 Junit 的 TestCase 的子类,它处理有关模拟框架的各种内务工作。它使测试班的生活变得非常轻松。

现在有了 JUnit4,JMock 不再提供这样的支持。您的测试类必须手动创建一个 Mockery 对象,它必须记住使用正确的测试运行器注释,并且必须将所有与模拟相关的操作委托给模拟。简而言之,与 JUnit 3 测试相比,它赋予了测试类更多的责任。

现在我很欣赏 JUnit4 的部分魅力在于不需要子类化某些东西,但是这种 JMock 情况似乎是倒退了一步,并且使从 3 到 4 的移植工作比必要的要多。

我错过了什么吗?实际上有没有一种很好的方法来编写我的 JUnit4/Jmock2 测试类,而无需手动将所有管道添加到每个类中?当然,我可以编写自己的支持基类,但这似乎是 JMock2 API 的明显遗漏,我不得不怀疑我是否错过了重点。


编辑:这是可选支持类的源代码:

这包含了 JUnit3 MockObjectTestCase 类定义的所有方法,这些方法只是与嘲弄相呼应。@RunWith 注释也在那里,以避免忘记将其添加到测试类的可能性。

0 投票
3 回答
2052 浏览

spring - 如何使用 JMock 在 Java 中模拟静态变量

我有一个单元测试问题,其中一个类有一个想要加载 Spring Application Ctx 的静态变量。

这个类不是从 Bean Factory 出来的,我无法改变这个事实。

这工作正常,但很难JMock,或者至少我不知道一种方法,直到我可以 Spring Ctx 想要启动。不适合单元测试情况。

有没有人知道的解决方法?我可以选择将静态变量更改为我想要的任何东西..

谢谢。

0 投票
5 回答
15624 浏览

java - 对 Swing 组件进行单元测试

我正在编写一个类似 TotalCommander 的应用程序。我有一个单独的文件列表组件和一个模型。CurrentDirChanged模型支持侦听器并以下列方式为诸如此类的事件发出通知:

我为此写了一个简单的测试:

这不起作用,因为没有EventDispatchThread. 有没有办法在无头构建中对此进行单元测试?

单元测试 java swing jmock

0 投票
3 回答
6344 浏览

java - 一起使用 Spring JUnit4 和 JMock

现在,当我运行 Junit4 测试时,我使用@RunWith(SpringJUnit4ClassRunner.class)允许我将 Spring Beans 注入我的测试类的注释。

我想使用 JMock 2 框架(我没有实际经验),但我看到的示例需要以下@RunWith(JMock.class).

所以我的问题是我可以将 JMock 和 Spring 与我的 JUnit4 测试一起使用吗?如果可以,如何?例如,是否有一个也支持 JMock 的 Spring 测试运行器?

谢谢,

理查德

0 投票
1 回答
786 浏览

junit - AtUnit 与“Junit、JMock 和 GUICE”的手工对比 - ?

AtUnit 在使用 DI 和 guice 进行单元测试方面的表现如何?请分享您的经验。

0 投票
9 回答
18264 浏览

java - 单元测试辅助方法?

我有以前有大量方法的类,所以我将此方法的工作细分为“帮助”方法。

这些辅助方法被声明private为强制封装 - 但是我想对大型公共方法进行单元测试。对辅助方法进行单元测试是否也好,就好像其中一个方法失败了,调用它的公共方法也会失败,这样我们就可以确定它失败的原因?

此外,为了使用模拟对象测试这些,我需要将它们的可见性从私有更改为受保护,这是可取的吗?

0 投票
4 回答
3936 浏览

java - 一起使用 Guice 和 JMock 的最佳方式是什么?

我已经开始使用 Guice 对项目进行一些依赖注入,主要是因为我需要在远离单元测试的一层注入 mocks(目前使用 JMock),这使得手动注入非常尴尬。

我的问题是引入模拟的最佳方法是什么?我目前拥有的是在单元测试中创建一个满足依赖项的新模块,并将它们与如下所示的提供程序绑定:

在构造函数中传递模拟,因此 JMock 设置可能如下所示:

有没有更好的办法?我知道 AtUnit 试图解决这个问题,虽然我错过了它如何自动神奇地注入一个像上面一样在本地创建的模拟,但我正在寻找一个令人信服的理由,为什么 AtUnit 是这里的正确答案(其他比它在不更改测试的情况下更改 DI 和模拟框架的能力)或者是否有更好的解决方案可以手动完成。

0 投票
2 回答
697 浏览

java - 未找到使用 JMock 的测试

尝试使用 Ant 进行单元测试时遇到问题,我的测试类使用 Jmock;

和注释以识别每种测试方法。当我尝试使用 ant (1.7.1) 构建时,我得到一个

[junit] 在 MyTestClass 中未找到测试
[junit] junit.framework.AssertionFailedError:未找到测试

有什么建议么?

0 投票
2 回答
4054 浏览

java - Jmock 模拟 DAO 对象

我写了一个方法来检索某些字符串列表,给定一个正确的字符串键。现在,当我创建一个列表(通过上一句中描述的方法检索的列表)并创建测试时,我可以轻松获得结果并成功通过测试。

另一方面,如果我将此列表的内容保存到数据库中的 2 列中,key并且value我编写了一个类,该类使用其中的方法检索这些项目。当我将它打印出来以控制台预期结果是正确的时,现在我从应用程序上下文初始化我的 DAO,在它的 bean 内部它获取会话并且因为 DAO 工作。

现在我正在尝试编写一个模拟 DAO 的测试,因为我不在服务器上运行本地测试..所以我告诉 jmock 模拟它:

在设置()

我想我是否正确地模拟了它,我怎样才能从数据库中模拟这些数据?什么是最好的方法?

有没有好的 Jmock 文档?在他们的官方网站上它不是很好和清晰,你必须知道你在寻找什么才能找到它,同时不能发现一些很酷的东西。

或者有人可以用这种方法帮助我:

如何创建仅用于测试的应用程序上下文,以在服务器上实例化 DAO 和少数 bean。所以我可以在测试中使用它吗?也欢迎提出建议,解释。谢谢你