问题标签 [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 回答
892 浏览

java - 将 assertArrayEquals() 与通配符一起使用?

我想测试生成用于作为 UDP 数据包发送的字节数组的代码。

虽然我无法重现测试中的每个字节(例如随机字节、时间戳),但我想测试我可以预先确定的字节。

使用 JUnit 4.8(和 Mockito 1.8)可能会出现以下情况吗?

上面的示例当然不起作用,我只是在寻找一种在assertArrayEquals().

PS:我现在唯一的选择是单独检查每个字节(并省略随机字节)。但这很乏味,而且不是真正可重用的。


感谢 JB Nizet 的回答,我现在有了以下代码,工作得很好:

0 投票
2 回答
11357 浏览

java - Hamcrest 断言那模棱两可?

我从一所大学获得了一些示例代码,导入了项目并尝试运行测试:方法 assertThat(Integer, Matcher) 对于 MyClass 类型不明确

每个 assertThat 都用相同的错误消息标记为红色,所以我尝试编写描述问题的最简单的测试:

滚动到 assertThat 后,我​​收到以下消息:

我搜索了谷歌和stackoverflow,但找不到任何有同样问题的人......请帮忙。

编辑1:

解决方案:

导入静态 org.junit.Assert.*;// 删除这一行

0 投票
2 回答
2235 浏览

java - 泛型地狱 - 我如何将 joda.DateTime 传递给 Hamcrest Matcher.greaterThan?

乔达时间有

它可以达到

Hamcrest 有

如果我尝试

然后我得到一个编译错误(Eclipse 给出了最多的线索)

Matchers 类型的泛型方法 GreaterThan(T) 不适用于参数 (DateTime)。推断的类型 DateTime 不是有界参数的有效替代 >

我是否认为签名greaterThan实际上应该是

? 有没有办法将这些组合在一起,而不是投射到原始状态Comparable

0 投票
1 回答
890 浏览

java - 用于 Object... 参数的 Hamcrest 匹配器

我得到了上课的方法

我有一个自定义的 Hamcrest 匹配器

如何编写与传递给方法1的对象匹配的期望

实际调用是

传递的对象和预期的一样,但是SomeObjectMatcher失败了,因为实际传递的参数不是someObject1,而是SomeObject[]{someObject1}(只有一个对象的数组-someObject1)?有没有办法在链中添加一个新的匹配器,比如

0 投票
3 回答
1358 浏览

java - Eclipse 和 javac 之间的 Hamcrest Matcher 编译区别

我正在尝试在 hasItem 匹配器中使用来自 hamcrest 的自定义匹配器

匹配器看起来像这样

这在 eclipse 中运行得很好,但是当从命令行使用 maven 构建时,它会引发异常:

我知道这是一个类型擦除问题,这是由于 eclipse 编译器和命令行之间存在一些差异,但我不确定处理它的最佳方法。

0 投票
4 回答
2144 浏览

java - 有什么方法可以在生产代码中使用 Hamcrest 匹配器?

我想使用hamcrest作为糖框架在if语句中使用,而不是在带有断言的单元测试中,而是在原始生产代码中。

就像是

或者

就像AssertThat但没有抛出错误,只是返回布尔值。可能吗?

0 投票
1 回答
30702 浏览

java - Mockito's Matcher vs Hamcrest Matcher?

这将是一个简单的问题,但如果我的类路径中包含两个库,我找不到它们之间的区别以及使用哪一个?

0 投票
1 回答
719 浏览

java - 为什么这个 assertThat 断言会抛出 AssertionError?

为作业创建测试,我遇到了一个奇怪的AssertionError异常。

我已经改变了它,直到我遇到一个简单的案例:

排列.java:

挖掘 junit 和 hamcrest 源代码,我发现 junit assertThat 只调用匹配器上的匹配项。

在这种情况下,matches 方法是:

其中 arg 应为“p2”,object 应为“p1”。

(可以在Hamcrest 存储库中浏览)

areEqual 方法中使用调试器检查的比较结果是:

如您所见,代码应该达到最后一个 else 条件并返回true( p2.equals(p1)),但equalTo(p1).matches(p2)返回false

谢谢你的帮助

0 投票
3 回答
7892 浏览

java - 字符串的 Hamcrest 匹配器,其中字符串包含一些随机值

有没有办法将以下字符串与任何 hamcrest 匹配器匹配。

这个字符串被传递给一个方法。我使用 JMock 期望来匹配它。

问题:“72e3a446-2fed-4bda-ac35-34e95ab3dc32”部分是随机生成的UUID,是在被测方法内部生成的。是否有一个 Hamcrest 字符串匹配器可以匹配类似的东西

它必须匹配预期的字符串以"{\"messageType\":\"identify\",\"_id\":\"之后有任何字符串开始,并以",\"address\":\"192.168.0.0\",\"port\":7070}"

编辑:解决方案

0 投票
7 回答
36077 浏览

java - Hamcrest 日期匹配器

我需要在某个测试用例中的日期之前/之后进行测试。如果可能的话,我想使用Hamcrest 匹配器。

Hamcrest (Java) 是否有任何匹配器用于处理日期?如果是这样,我会在哪个包/类中找到特定的日期匹配器功能?