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

java - hamcrest 中的递归 SamePropertyValuesAs 匹配器

我正在寻找一个 hamcrest 匹配器,它的行为方式与SamePropertyValuesAs相同,但如果属性不是原始属性、标准 Java 类之一(字符串、整数等)或其中之一(集合或数组),那么它也会对这些属性进行递归匹配。

那里有这样的匹配器还是我必须自己滚动?

0 投票
6 回答
1630 浏览

java - 断言一个集合在Java中有多个项目实例?

这个老问题的答案建议 Hamcrest 对集合进行断言。

如果我想断言一个集合有一个对象的多个实例会发生什么?

我试过的 hamcrest 代码并不关心多重性——上面的两个断言都会通过。

0 投票
2 回答
47262 浏览

java - 断言集合不包含项目

使用用于 Java 的 hamcrest 库,这是一种很好阅读的方式来做相反的事情:

我想确保someCollection不包含项目someItem

0 投票
1 回答
437 浏览

objective-c - 在 OCHamcrest 中断言结构相等

假设我想断言两个结构是等价的:

有没有办法使用像STAssertEquals上面那样工作的 Hamcrest 来编写断言?该assertThat行无法编译,因为宏需要id参数,而结构不是。我尝试了equalTo匹配器的变体,例如sameInstance,但它们似乎都需要id类型参数。接下来,我认为一个好的解决方法是断言任意表达式具有YESorNO值。像这样的东西:

或这个:

但我在 Hamcrest 没有看到这样的东西。

我错过了一些明显的东西吗?显然,我可以通过使用 SenTest 宏(STAssertEquals例如

我也知道我可以通过为我正在比较的特定结构实现自定义 Hamcrest 匹配器来做到这一点。但我真的在寻找一个简单的断言/匹配器,它可以比较任何 C 结构以获得简单的字节相等。

也许只是因为我提到的所有可能性都不可能与 Hamcrest 一起开箱即用。如果这是真的,我会接受一个令人信服的解释作为答案。

谢谢

0 投票
22 回答
38951 浏览

java - hamcrest 测试总是失败

我正在使用 hamcrest 1.3 来测试我的代码。这简直就是一个死。我正在尝试对其进行测试以确保生成的数字小于 13。我有一个打印语句打印生成的数字是什么。生成的数字始终小于 13,但测试始终失败。有什么我做错了吗?

这是我正在测试的代码。

这是我的测试代码。

编辑:这是失败堆栈跟踪。

0 投票
1 回答
2075 浏览

java - Hamcrest 泛型地狱#2:iterableWithSize 给出错误“不适用于参数”

在 hamcrest(1.3.RC2,没有 JUnit 依赖项)中,我使用失败iterableWithSize().

我有一个像这样 Iterator参数化的(扩展)ContentEndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*content*");

where EndResultis package org.springframework.data.neo4j.conversion; public interface EndResult<R> extends Iterable<R> {...} and Contentis a my Pojo。

现在,我认为这会起作用 assertThat(contents, iterableWithSize(1));

但它给了我错误: Assert 类型中的方法 assertThat(T, Matcher) 不适用于参数 (EndResult< Content>, Matcher< Iterable< Object>>)

我也尝试了这些失败:

assertThat(contents, iterableWithSize(equalTo(1));

assertThat(contents, IsIterableWithSize.<EndResult<Content>>.iterableWithSize(1));

这些是我的进口:

集合的 hasSize 按预期工作,但对于迭代器,我什至找不到工作示例......

0 投票
1 回答
757 浏览

generics - Hamcrest:当 iterableWithSize 失败时,它会给出一条错误消息,例如“got: com.xxx.MyIterClass$1@1970ae0”

在 hamcrest(1.3.RC2,没有 JUnit 依赖项)中,我无法将 iterableWithSize() 与 SpringDataNeo4j 库一起使用。

我有一个像这样Iterator参数化的(扩展)Content

EndResult在哪里

包 org.springframework.data.neo4j.conversion;公共接口 EndResult 扩展 Iterable {...}

并且Content是一个@NodeEntityPojo。

在马克彼得斯的帮助下,我知道我应该这样称呼它

因为iterableWithSize是在 your 的组件类型上键入的Iterable,而不是在 iterable 本身的具体类型上键入的。

但是当测试运行时我得到

试图弄清楚 1) 我做错了什么,或者 2) hamcrest 或 3) Spring Data Neo4j 是否有错误,我检查了我手头的对象,它似乎可以Iterable

所以我猜它可能会得出结论,它的腿骨有问题。有没有人尝试过与 IsIterableWithSize 类似的东西?

测试代码是https://github.com/anodynos/SpringDataNeo4jTrials/blob/master/src/test/java/sdnTests/test/HamcrestIteratorSizeTest.java

0 投票
2 回答
135 浏览

unit-testing - 使用排序测试集合相等性

我正在编写简单的测试来检查方法返回下面的一些接口Collection。我试图尽可能地抽象这个集合的内部表示,以便这个测试在两种情况下都能通过:当方法返回时ListSet.

Set应该订购(或LinkedHashSet支持LinkedHashMapSet所以我也必须测试订单。所以一般我想写这样的测试:

如果两个集合不是“相同的”(即相同顺序中的相同值),这将失败。

我发现 Hamcrest 库在这种情况下很有用,但是我被困在它的文档中。任何帮助将不胜感激,但是Matcher如果可能的话,我会尽量避免编写 CollectionTestUtil 或我自己的 Hamcrest。

0 投票
3 回答
2341 浏览

java - 将 lambdaj 与 String.matches 方法一起使用

如何过滤Collection<String>使用 lambdaj 和 String.matches 方法。
我是 lambdaj 的新手并且感觉很愚蠢,因为给出的例子比这更复杂。

0 投票
1 回答
3145 浏览

android - 如何在 Android 上将 Hamcrest 匹配器与 jUnit 一起使用

我对 Android 有点陌生,并且一直在努力研究如何在我的测试项目中包含 Hamcrest 匹配器。该代码看起来应该在 Eclipse 中运行,没有指示错误。但是当我运行测试时,Hamcrest 类没有加载。我得到“NoClassDefFoundError:org.hamcrest.Matchers”。

我花了过去 3 个小时浏览论坛,发现有人以前遇到过这种情况,但没有运气。我一定是在做一些愚蠢的事情,因为 IDE 可以看到这些类,但运行时却没有。

这里是测试源:

我尝试将 hamcrest-all-1.2.jar 添加为库和外部 jar。两种方式的结果相同,代码在 IDE 中看起来不错,但无法在运行时加载类。

我的理论是 hamcrest.jar 不与 .apk 文件一起使用,这就是它的类没有被加载的原因。如果这是真的,我如何将它与 .apk 文件一起推送到 android?