問題タブ [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 マッチャー

SamePropertyValuesAsと同じように動作する hamcrest マッチャーを探していますが、プロパティがプリミティブでない場合、標準の Java クラス (文字列、整数など) の 1 つ、またはそれらの 1 つの複合 (コレクションまたは配列) の場合、それらのプロパティに対しても再帰的な一致が行われます。

そのようなマッチャーはありますか、それとも自分で作成する必要がありますか?

0 投票する
6 に答える
1630 参照

java - コレクションにJavaのアイテムの複数のインスタンスがあると主張していますか?

この古い質問への回答では、コレクションに対するアサートに Hamcrest を推奨しています。

コレクションにオブジェクトの複数のインスタンスがあると主張したい場合はどうなりますか?

私が試した hamcrest コードは多重度を気にしません - 上記のアサートは両方ともパスします。

0 投票する
2 に答える
47262 参照

java - コレクションにアイテムが含まれていないことをアサートします

Java 用の hamcrest ライブラリを使用して、次の逆を実行する読みやすい方法は何ですか?

someCollectionアイテムが含まれていないことを確認したいsomeItem

0 投票する
1 に答える
437 参照

objective-c - OCHamcrest で構造体の等価性をアサートする

2 つの構造体が同等であると主張したいとします。

上記のように動作する Hamcrest を使用してアサーションを記述する方法はありませんSTAssertEqualsか? assertThatマクロはidパラメーターを想定しているため、この行はコンパイルに失敗しますが、構造体はそうではありません。equalToなどのマッチャーのバリエーションを試しましたが、すべて型付きパラメーターsameInstanceが必要なようです。次に、良い回避策は、任意の式がorの値idを持つことをアサートすることだと思いました。このようなもの:YESNO

またはこれ:

しかし、ハムクレストではこのようなものは見当たりません。

明らかな何かが欠けていますか?などの SenTest マクロを使用してやりたいことを達成できることは明らかですが、Hamcrest を使用してSTAssertEqualsこれらのアサーションを実装するのは簡単だと思っていたので、すべてのアサーションが一貫したスタイルになります。

また、比較している特定の構造体に対してカスタム Hamcrest マッチャーを実装することで、これを実行できることもわかっています。しかし、単純なバイト単位の等価性について C 構造体を比較できる単純なアサーション/マッチャーを本当に探していました。

おそらく、私が言及した可能性のどれも、Hamcrest をそのまま使用することはできないという単純なケースです。それが本当なら、私はこの趣旨の説得力のある説明を回答として受け入れます。

ありがとう

0 投票する
22 に答える
38951 参照

java - ハムクレストテストは常に失敗します

コードをテストするためにhamcrest1.3を使用しています。それは単にサイコロです。生成された数が13未満であることを確認するためにテストしようとしています。生成された数が何であるかを印刷するprintステートメントがありました。生成された数は常に13未満でしたが、テストは常に失敗しました。私が間違っていることはありますか?

これは私がテストしているコードです。

そして、これは私のテストコードです。

編集:これは障害スタックトレースです。

0 投票する
1 に答える
2075 参照

java - Hamcrest ジェネリックの地獄 #2 : iterableWithSize はエラー「引数には適用できません」を与える

hamcrest (1.3.RC2、JUnit 依存関係なし) で使用に失敗していますiterableWithSize().

私はこのよう にIteratorパラメータ化された(の拡張)を持っていますContentEndResult<Content> contents = contentRepository.findAllByPropertyValue("title", "*content*");

私のPojoはどこにEndResultあり package org.springframework.data.neo4j.conversion; public interface EndResult<R> extends Iterable<R> {...} ますか。Content

今、私はこれがうまくいくと思うでしょう 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 依存関係なし) で、SpringDataNeo4j ライブラリで iterableWithSize() を使用すると失敗します。

私はこのようにIteratorパラメータ化された(の拡張)を持っていますContent

どこEndResultですか

パッケージ org.springframework.data.neo4j.conversion; public インターフェイス EndResult extends Iterable {...}

そしてContentaa @NodeEntityPojoです。

Mark Petersの助けを借りて、私はこのように呼ぶべきであることを学びました

なぜなら、 iterable 自体の具象型ではなく、iterableWithSizeあなたのコンポーネント型に型付けされているからです。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。このコレクションの内部表現を可能な限り抽象化しようとしているので、このテストは、メソッドが戻るときとの両方の場合に合格しListますSet

Set注文(LinkedHashSetまたはLinkedHashMap裏付けSet)されることになっているので、私も注文をテストする必要があります。だから一般的に私はこのようなテストを書きたいと思います:

これは、両方のコレクションが「同じ」でない場合(つまり、同じ順序で同じ値)に失敗します。

この場合、Hamcrestライブラリが役立つことがわかりましたが、ドキュメントに固執しています。どんな助けでもいただければ幸いですが、可能であれば、CollectionTestUtilや自分のHamcrestを書かMatcherないようにします。

0 投票する
3 に答える
2341 参照

java - String.matches メソッドで lambdaj を使用する

Collection<String>lambdaj と String.matches メソッドを使用してフィルター処理する方法。
与えられた例はこれよりも複雑であるため、私はラムダジに慣れておらず、ばかげていると感じています。

0 投票する
1 に答える
3145 参照

android - AndroidでjUnitでHamcrestマッチャーを使用する方法

私はAndroidに少し慣れていないので、テストプロジェクトにHamcrestマッチャーを含める方法について何時間も苦労しています。コードはEclipseで実行されるはずであり、エラーは示されていません。しかし、テストを実行すると、Hamcrestクラスがロードされていません。「NoClassDefFoundError:org.hamcrest.Matchers」が表示されます。

私は過去3時間、フォーラムを調べて、誰かが以前にこれに遭遇したことがあると考えましたが、運がありませんでした。IDEはクラスを見ることができるので、私は愚かなことをしているに違いありませんが、ランタイムはそうではありません。

テストソースは次のとおりです。

hamcrest-all-1.2.jarをライブラリおよび外部jarとして追加してみました。どちらの方法でも同じ結果になります。コードはIDEで正常に見えますが、実行時にクラスをロードできません。

私の理論では、hamcrest.jarは.apkファイルと一緒に使用されないため、そのクラスはロードされません。それが本当なら、どうすればそれを.apkファイルと一緒にAndroidにプッシュすることができますか?