问题标签 [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 中的递归 SamePropertyValuesAs 匹配器
我正在寻找一个 hamcrest 匹配器,它的行为方式与SamePropertyValuesAs相同,但如果属性不是原始属性、标准 Java 类之一(字符串、整数等)或其中之一(集合或数组),那么它也会对这些属性进行递归匹配。
那里有这样的匹配器还是我必须自己滚动?
java - 断言集合不包含项目
使用用于 Java 的 hamcrest 库,这是一种很好阅读的方式来做相反的事情:
我想确保someCollection
不包含项目someItem
objective-c - 在 OCHamcrest 中断言结构相等
假设我想断言两个结构是等价的:
有没有办法使用像STAssertEquals
上面那样工作的 Hamcrest 来编写断言?该assertThat
行无法编译,因为宏需要id
参数,而结构不是。我尝试了equalTo
匹配器的变体,例如sameInstance
,但它们似乎都需要id
类型参数。接下来,我认为一个好的解决方法是断言任意表达式具有YES
orNO
值。像这样的东西:
或这个:
但我在 Hamcrest 没有看到这样的东西。
我错过了一些明显的东西吗?显然,我可以通过使用 SenTest 宏(STAssertEquals
例如
我也知道我可以通过为我正在比较的特定结构实现自定义 Hamcrest 匹配器来做到这一点。但我真的在寻找一个简单的断言/匹配器,它可以比较任何 C 结构以获得简单的字节相等。
也许只是因为我提到的所有可能性都不可能与 Hamcrest 一起开箱即用。如果这是真的,我会接受一个令人信服的解释作为答案。
谢谢
java - hamcrest 测试总是失败
我正在使用 hamcrest 1.3 来测试我的代码。这简直就是一个死。我正在尝试对其进行测试以确保生成的数字小于 13。我有一个打印语句打印生成的数字是什么。生成的数字始终小于 13,但测试始终失败。有什么我做错了吗?
这是我正在测试的代码。
这是我的测试代码。
编辑:这是失败堆栈跟踪。
java - Hamcrest 泛型地狱#2:iterableWithSize 给出错误“不适用于参数”
在 hamcrest(1.3.RC2,没有 JUnit 依赖项)中,我使用失败iterableWithSize().
我有一个像这样
Iterator
参数化的(扩展)Content
EndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*content*");
where EndResult
is
package org.springframework.data.neo4j.conversion;
public interface EndResult<R> extends Iterable<R> {...}
and Content
is 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 按预期工作,但对于迭代器,我什至找不到工作示例......
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
是一个@NodeEntity
Pojo。
在马克彼得斯的帮助下,我知道我应该这样称呼它
因为iterableWithSize
是在 your 的组件类型上键入的Iterable
,而不是在 iterable 本身的具体类型上键入的。
但是当测试运行时我得到
试图弄清楚 1) 我做错了什么,或者 2) hamcrest 或 3) Spring Data Neo4j 是否有错误,我检查了我手头的对象,它似乎可以Iterable
:
所以我猜它可能会得出结论,它的腿骨有问题。有没有人尝试过与 IsIterableWithSize 类似的东西?
unit-testing - 使用排序测试集合相等性
我正在编写简单的测试来检查方法返回下面的一些接口Collection
。我试图尽可能地抽象这个集合的内部表示,以便这个测试在两种情况下都能通过:当方法返回时List
和Set
.
Set
应该订购(或LinkedHashSet
支持LinkedHashMap
)Set
所以我也必须测试订单。所以一般我想写这样的测试:
如果两个集合不是“相同的”(即相同顺序中的相同值),这将失败。
我发现 Hamcrest 库在这种情况下很有用,但是我被困在它的文档中。任何帮助将不胜感激,但是Matcher
如果可能的话,我会尽量避免编写 CollectionTestUtil 或我自己的 Hamcrest。
java - 将 lambdaj 与 String.matches 方法一起使用
如何过滤Collection<String>
使用 lambdaj 和 String.matches 方法。
我是 lambdaj 的新手并且感觉很愚蠢,因为给出的例子比这更复杂。
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?