问题标签 [hamcrest]

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

java - Hamcrest 的多个正确结果(是否有或匹配器?)

我对匹配器比较陌生。我正在与 JUnit 结合使用hamcrest,我有点喜欢它。

有没有办法声明多个选择中的一个是正确的?

就像是

我正在测试的方法返回集合的一个元素。该列表可能包含多个候选者。我当前的实现返回第一个命中,但这不是必需的。如果返回任何可能的候选人,我希望我的测试用例成功。你会如何用 Java 来表达这一点?

(我对 hamcrest-alternatives 持开放态度)

0 投票
4 回答
2347 浏览

objective-c - 使用带有 OCMock 或 Hamcrest 的结构

我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。OCMock 咳出了一个毛球,所以我试着用 Hamcrest 火柴盒包裹起来。没有死。我正在测试的函数/方法如下所示:

我使用这样的代码:

这有点工作。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条...错误..绿色按钮。当我确定我的测试应该通过时,我得到断言失败错误。这些错误告诉我该方法被意外调用并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我无处可去。我正准备破解我的调试器,这无疑会告诉我出了什么问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的问题吗?如果是这样,处理这些类型的最佳方法是什么?

0 投票
5 回答
121738 浏览

unit-testing - 如何测试枚举类型?

我目前正在尝试为一个小型库构建一套或多或少完整的单元测试。由于我们希望允许存在不同的实现,我们希望这组测试是 (a) 通用的,以便我们可以重新使用它来测试不同的实现,并且 (b) 尽可能完整。对于(b)部分,我想知道是否有测试枚举类型的最佳实践。例如,我有一个枚举如下:

在这里,我想确保所有枚举类型都确实存在。这甚至有必要吗?目前我正在使用 Hamcrests assertThat,如下例所示:

缺少“一月”枚举会导致编译时错误,可以通过创建缺少的枚举类型来修复该错误。

我在这里使用 Java,但我不介意您的答案是否适用于其他语言..

编辑:

正如 mkato 和 Mark Heath 都指出的那样,测试枚举可能没有必要,因为当您使用不存在的枚举类型时编译器不会编译。但我仍然想测试这些枚举,因为我们想构建一个单独的类似 TCK 的 test.jar,它将在不同的实现上运行相同的测试。所以我的问题更像是:测试枚举类型的最佳方法是什么?

在考虑了更多之后,我将上面的 Hamcrest 语句更改为:

当 1 月(还)不存在时,此语句现在会引发 NPE。这种方法有什么问题吗?

0 投票
3 回答
6405 浏览

eclipse - 将 Hamcrest 集成到 Eclipse 的 JUnit 的推荐方法是什么?

是否有推荐的方法将 Hamcrest 集成到 Eclipse 中的 JUnit 配置中?目前 Eclipse 的 JUnit 仅带有 Hamcrest-core。我想编辑该配置以包含 Hamcrest-all。我该怎么做?

0 投票
1 回答
671 浏览

testing - Hamcrest 1.2 有什么新功能?

Hamcrest 1.1 和 1.2 有什么区别?我找不到发行说明页面或文件列表更改!我在哪里可以找到这样的信息?

0 投票
9 回答
79774 浏览

java - 为什么这段试图使用 Hamcrest 的 hasItems 的代码不能编译?

这个怎么编译不出来啊,怎么办?

从评论中复制的错误:

0 投票
3 回答
14963 浏览

java - 混合 Hamcrest 和 TestNG

有没有人将 Hamcrest 与 TestNG 集成,以便它的匹配器可以轻松地用于 TestNG 断言?

0 投票
15 回答
41352 浏览

java - Ant + JUnit:NoClassDefFoundError

好吧,我很沮丧!我已经四处搜寻了好几个小时,但仍然很难过。

环境:WinXP、Eclipse Galileo 3.5(直接安装 - 无需额外插件)。

所以,我有一个简单的 JUnit 测试。它从它的内部 Eclipse JUnit 运行配置中运行良好。这个类不依赖任何东西。为了尽可能缩小这个问题,它只包含:

到现在都没有出汗。现在我想采取超级高级的步骤,在 Ant 中运行这个测试用例(最终目标是与 Hudson 集成)。

所以,我创建了一个 build.xml:

${basedir} 是包含源、类和构建文件的工作空间中的 Java 项目名称。所有 .java 和 build.xml 都在 ${basedir}/src 中。.class 文件位于 ${basedir}/bin 中。

我已通过 Windows / Preferences / Ant / Runtime / Contributed Entries 将 eclipse-install-dir/plugins/org.junit4_4.5.0.v20090423/junit.jar 添加到 Ant Runtime Classpath 中。ant-junit.jar 在 Ant Home Entries 中。

那么,当我运行这个极其复杂的目标时会发生什么?我的报告文件包含:

这个 org.hamcrest.SelfDescribeing 类是什么?和mock有关系吗?好的。但是为什么依赖呢?我什么也没做。这实际上是一个 Java 项目,除了 JUnit 之外没有其他依赖项。

难倒(和沮丧)!

0 投票
7 回答
58674 浏览

java - 为什么我应该使用 Hamcrest-Matcher 和 assertThat() 而不是传统的 assertXXX()-Methods

当我查看 Assert 类 JavaDoc 中的示例时

比方说,我看不出有什么大的优势assertEquals( 0, 1 )

如果结构变得更复杂,那么消息可能会很好,但您是否看到更多优势?可读性?

0 投票
1 回答
170 浏览

hamcrest - 是否有非 Java Hamcrest 匹配器库的稳定发布版本?

很明显,hamcrest Java 库有一个稳定的版本,但据我所知,hamcrest-php、hamcrest-python 和 hamcrest-as3(可能还有其他,但这些是我目前关心的)没有;您只能以源代码形式获取它们。委婉地说,当我必须将库的版本化副本部署到生产机器时,这有点痛苦。

这些库周围的社区是否有计划发布它们的稳定版本?