问题标签 [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.
java - Hamcrest 的多个正确结果(是否有或匹配器?)
我对匹配器比较陌生。我正在与 JUnit 结合使用hamcrest,我有点喜欢它。
有没有办法声明多个选择中的一个是正确的?
就像是
我正在测试的方法返回集合的一个元素。该列表可能包含多个候选者。我当前的实现返回第一个命中,但这不是必需的。如果返回任何可能的候选人,我希望我的测试用例成功。你会如何用 Java 来表达这一点?
(我对 hamcrest-alternatives 持开放态度)
objective-c - 使用带有 OCMock 或 Hamcrest 的结构
我遇到了障碍,我想知道这里聪明的集体思想是否可以提供帮助。在 ObjC CocoaTouch 中,我试图模拟一个接受结构参数并返回结构的对象。OCMock 咳出了一个毛球,所以我试着用 Hamcrest 火柴盒包裹起来。没有死。我正在测试的函数/方法如下所示:
我使用这样的代码:
这有点工作。因此,在我正在测试的对象中,我进行了必要的必要编辑以在构建信息窗口中获得一个绿色条...错误..绿色按钮。当我确定我的测试应该通过时,我得到断言失败错误。这些错误告诉我该方法被意外调用并将这些结构的值列为问号。我尝试用 Hamcrest 匹配器包装结构,但我无处可去。我正准备破解我的调试器,这无疑会告诉我出了什么问题。这里有人在 OCMock/Hamcrest 和结构方面遇到过类似的问题吗?如果是这样,处理这些类型的最佳方法是什么?
unit-testing - 如何测试枚举类型?
我目前正在尝试为一个小型库构建一套或多或少完整的单元测试。由于我们希望允许存在不同的实现,我们希望这组测试是 (a) 通用的,以便我们可以重新使用它来测试不同的实现,并且 (b) 尽可能完整。对于(b)部分,我想知道是否有测试枚举类型的最佳实践。例如,我有一个枚举如下:
在这里,我想确保所有枚举类型都确实存在。这甚至有必要吗?目前我正在使用 Hamcrests assertThat
,如下例所示:
缺少“一月”枚举会导致编译时错误,可以通过创建缺少的枚举类型来修复该错误。
我在这里使用 Java,但我不介意您的答案是否适用于其他语言..
编辑:
正如 mkato 和 Mark Heath 都指出的那样,测试枚举可能没有必要,因为当您使用不存在的枚举类型时编译器不会编译。但我仍然想测试这些枚举,因为我们想构建一个单独的类似 TCK 的 test.jar,它将在不同的实现上运行相同的测试。所以我的问题更像是:测试枚举类型的最佳方法是什么?
在考虑了更多之后,我将上面的 Hamcrest 语句更改为:
当 1 月(还)不存在时,此语句现在会引发 NPE。这种方法有什么问题吗?
eclipse - 将 Hamcrest 集成到 Eclipse 的 JUnit 的推荐方法是什么?
是否有推荐的方法将 Hamcrest 集成到 Eclipse 中的 JUnit 配置中?目前 Eclipse 的 JUnit 仅带有 Hamcrest-core。我想编辑该配置以包含 Hamcrest-all。我该怎么做?
testing - Hamcrest 1.2 有什么新功能?
Hamcrest 1.1 和 1.2 有什么区别?我找不到发行说明页面或文件列表更改!我在哪里可以找到这样的信息?
java - 为什么这段试图使用 Hamcrest 的 hasItems 的代码不能编译?
这个怎么编译不出来啊,怎么办?
从评论中复制的错误:
java - 混合 Hamcrest 和 TestNG
有没有人将 Hamcrest 与 TestNG 集成,以便它的匹配器可以轻松地用于 TestNG 断言?
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 之外没有其他依赖项。
难倒(和沮丧)!
java - 为什么我应该使用 Hamcrest-Matcher 和 assertThat() 而不是传统的 assertXXX()-Methods
当我查看 Assert 类 JavaDoc 中的示例时
比方说,我看不出有什么大的优势assertEquals( 0, 1 )
。
如果结构变得更复杂,那么消息可能会很好,但您是否看到更多优势?可读性?
hamcrest - 是否有非 Java Hamcrest 匹配器库的稳定发布版本?
很明显,hamcrest Java 库有一个稳定的版本,但据我所知,hamcrest-php、hamcrest-python 和 hamcrest-as3(可能还有其他,但这些是我目前关心的)没有;您只能以源代码形式获取它们。委婉地说,当我必须将库的版本化副本部署到生产机器时,这有点痛苦。
这些库周围的社区是否有计划发布它们的稳定版本?