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

iphone - Xcode 3.2.4、iOS 4.1 SDK 使用 Hamcrest 断言的单元测试失败

我们使用 iOS 4.1 SDK 升级到 Xcode 3.2.4,现在我们的测试失败了。

首先因为这个处理命令输出时发生内部错误:-[XCBuildLogCommandInvocationSectionRecorder endMarker]: unrecognized selector sent to instance 0x201aa7200然后我们使用了苹果论坛(http://gist.github.com/586296)建议的补丁,现在第一个 Hamcrest 断言测试失败。

这是日志:

有人见过吗?它在 3.1.3 SDK 上运行良好。

0 投票
3 回答
2206 浏览

java - 是否有使用 Hamcrest 'describeMismatch' 功能的 JUnit assertThat 版本?

在我尝试过的每个 JUnit 版本(最高 4.8.1)中,失败的 assertThat 将显示如下错误消息:

预期:[describeTo]
得到:[对象的字符串表示]

换句话说,它将显示对象的 toString(),而不是来自 Matcher 的不匹配描述。如果我使用 org.hamcrest.MatcherAssert.assertThat 中的 assertThat,那么它将调用“describeMismatch”并显示更有用的错误消息。

我是在错误地使用 Junit,还是目前没有可以满足我要求的 JUnit 版本?大多数人会使用 Hamcrest assertThat 吗?

0 投票
2 回答
1385 浏览

eclipse - NoSuchMethodError: org.hamcrest.Matchers.hasXPath 当我在 Eclipse 中运行测试时

我有一个使用 hamcrest 库(1.2)的单元测试。它是 1.2 很重要,因为我想在 hasXPath 匹配器中包含命名空间上下文。这是一个 Maven 项目,我已将所有依赖项设置为正常工作。(我确保我只使用 junit-dep 而不是 junit - 很痛苦,但我已经确认我的依赖关系树是正确的。)在 maven 中一切正常。但是,当我在 eclipse (3.6) 中运行相同的测试时,出现以下错误:

我已经仔细检查了项目的 eclipse 构建路径配置,它也有 junit-dep 并且没有 junit 和 hamcrest 1.2。此外,没有编译错误,所以这只是运行时的事情。eclipse 是否有它自己的运行时会干扰这里?我该如何解决这个问题?

导致异常的代码在这里:

我不确定在没有大量上下文的情况下这是否有帮助 - 即 Web 服务代码、完整的类代码、MetaNamespaceContext 等依赖类等。但是,我相信这一切都可以在我mvn clean install从命令行执行时,一定是eclipse配置问题,与运行的具体代码关系不大。(当然,除了该hasXPath(String, NamespaceContext, Matcher)方法仅在 1.2 中可用,如果我只使用hasXPath(String, Matcher).

0 投票
1 回答
908 浏览

java - 在 Groovy 中使用带有 JMock 的 Hamcrest 匹配器

我是 Groovy 的新手(同样也是 JMock 的新手),并且在构建对被模拟方法的参数使用匹配器的期望时遇到了一些麻烦。当我尝试做这样的事情时:

在构建期望时会导致以下错误:

aNonNull 返回Matcher<T>(org.hamcrest.core.IsNot implements Matcher<T>) 并且有一个 Expectations.with 方法接受一个 Matcher 所以我不知道为什么 Groovy 试图找到一个带有具体类而不是指定接口的版本由非空。我还尝试将 aNonNull 的返回值转换为 Matcher 并且Matcher<T>不对错误进行任何更改。我不确定泛型是否有一些东西让 Groovy 感到困惑,或者还有什么要检查的。

0 投票
3 回答
321 浏览

java - 从 maven 项目发布测试工具

我在 Maven 中创建了一个库,可以通过实现一些接口来扩展它。为了测试默认实现,我编写了一些当前存在于src/test/java.

但是,我认为如果他们想测试他们的定制,它们可能对图书馆的用户有用。

那么我怎样才能使它们可用呢?将它们移动到src/main需要使 hamcrest 成为运行时依赖项,我不希望这样。

0 投票
7 回答
17159 浏览

java - Java Hamcrest:集合包含类型的项目

我想断言List<Achievement>包含 type 的成员TestAchievement

这是我的断言:

这不编译,报告错误:

Assert 类型中的方法 assertThat(T, Matcher) 不适用于参数 (List, Matcher<Iterable<TestAchievement>>)

使用 Hamcrest 进行此类断言的正确语法是什么?

0 投票
3 回答
4615 浏览

java - 有没有一种使用 Hamcrest 匹配字段的简单方法?

我想测试对象的特定字段是否与我指定的值匹配。在这种情况下,它是 S3Bucket 对象中的存储桶名称。据我所知,我需要为此编写一个自定义匹配器:

如果有更简单的方法来做到这一点,那就太好了,比如:

谁能指出我这样的事情?我想在这种情况下我已经解决了我的问题,但这不是我第一次希望有一个更简单的方法。

0 投票
2 回答
548 浏览

eclipse - Hamcrest & JUnit & Eclipse:错误消息错误的方式

我目前在 Eclipse Helios 之上的 JUnit 4 之上运行 Hamcrest 1.3RC,关于 Hamcrest 只有一件事困扰我:错误消息是错误的。而不是“预期:<预期值>,但是:<实际值>”,我得到“预期:<实际值>,但是:<预期值>”。

我的意思是,这不是什么大事,但是来吧^^ 真的没有一个在其他方面做得如此出色的 Hamcrest 开发人员注意到这一点吗?或者这是我的环境独有的错误?只要告诉我你是否也有它,或者没有它,甚至更好,你知道修复这个错误的方法。

我用 Hamcrest 1.2 和 1.3RC 都试过了,但都没有正确。TIA 提供任何提示。

一些代码来说明这个问题(名字部分是德语,我希望没关系):

[EDIT2] 使用 Hamcrest 专门解决了这个问题。从现在开始,我将避免使用 assertEquals(...,...) 来支持 assertThat(... is(...))。

0 投票
8 回答
69454 浏览

java - 如何一起使用 JUnit 和 Hamcrest?

我不明白 JUnit 4.8 应该如何与 Hamcrest 匹配器一起使用。junit-4.8.jar里面定义了一些匹配器org.hamcrest.CoreMatchers。同时 in 中还有一些其他匹配器。那么,去哪里呢?我是否应该在项目中明确包含 hamcrest JAR 并忽略 JUnit 提供的匹配器?hamcrest-all-1.1.jarorg.hamcrest.Matchers

特别是,我对empty()matcher 很感兴趣,但在这些 jar 中都找不到它。我需要别的东西吗?:)

还有一个哲学问题:为什么 JUnit 将org.hamcrest包包含在自己的发行版中,而不是鼓励我们使用原始的 hamcrest 库?

0 投票
1 回答
2537 浏览

java - org.hamcrest.Matchers 用于同时匹配对象的不同属性

我正在尝试通过 org.hamcrest.Matchers 匹配对象的两个不同属性。这里是:

它给出了一个 LeaveApply 对象的列表,该对象的 user-id 等于给定的 id,并且 date 小于或等于 to-date 并且大于或等于 from-date。这是工作。我想知道匹配不同属性字段的正确方法吗?