問題タブ [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 マッチャー
SamePropertyValuesAsと同じように動作する hamcrest マッチャーを探していますが、プロパティがプリミティブでない場合、標準の Java クラス (文字列、整数など) の 1 つ、またはそれらの 1 つの複合 (コレクションまたは配列) の場合、それらのプロパティに対しても再帰的な一致が行われます。
そのようなマッチャーはありますか、それとも自分で作成する必要がありますか?
java - コレクションにJavaのアイテムの複数のインスタンスがあると主張していますか?
この古い質問への回答では、コレクションに対するアサートに Hamcrest を推奨しています。
コレクションにオブジェクトの複数のインスタンスがあると主張したい場合はどうなりますか?
私が試した hamcrest コードは多重度を気にしません - 上記のアサートは両方ともパスします。
java - コレクションにアイテムが含まれていないことをアサートします
Java 用の hamcrest ライブラリを使用して、次の逆を実行する読みやすい方法は何ですか?
someCollection
アイテムが含まれていないことを確認したいsomeItem
objective-c - OCHamcrest で構造体の等価性をアサートする
2 つの構造体が同等であると主張したいとします。
上記のように動作する Hamcrest を使用してアサーションを記述する方法はありませんSTAssertEquals
か? assertThat
マクロはid
パラメーターを想定しているため、この行はコンパイルに失敗しますが、構造体はそうではありません。equalTo
などのマッチャーのバリエーションを試しましたが、すべて型付きパラメーターsameInstance
が必要なようです。次に、良い回避策は、任意の式がorの値id
を持つことをアサートすることだと思いました。このようなもの:YES
NO
またはこれ:
しかし、ハムクレストではこのようなものは見当たりません。
明らかな何かが欠けていますか?などの SenTest マクロを使用してやりたいことを達成できることは明らかですが、Hamcrest を使用してSTAssertEquals
これらのアサーションを実装するのは簡単だと思っていたので、すべてのアサーションが一貫したスタイルになります。
また、比較している特定の構造体に対してカスタム Hamcrest マッチャーを実装することで、これを実行できることもわかっています。しかし、単純なバイト単位の等価性について C 構造体を比較できる単純なアサーション/マッチャーを本当に探していました。
おそらく、私が言及した可能性のどれも、Hamcrest をそのまま使用することはできないという単純なケースです。それが本当なら、私はこの趣旨の説得力のある説明を回答として受け入れます。
ありがとう
java - ハムクレストテストは常に失敗します
コードをテストするためにhamcrest1.3を使用しています。それは単にサイコロです。生成された数が13未満であることを確認するためにテストしようとしています。生成された数が何であるかを印刷するprintステートメントがありました。生成された数は常に13未満でしたが、テストは常に失敗しました。私が間違っていることはありますか?
これは私がテストしているコードです。
そして、これは私のテストコードです。
編集:これは障害スタックトレースです。
java - Hamcrest ジェネリックの地獄 #2 : iterableWithSize はエラー「引数には適用できません」を与える
hamcrest (1.3.RC2、JUnit 依存関係なし) で使用に失敗していますiterableWithSize().
私はこのよう
にIterator
パラメータ化された(の拡張)を持っていますContent
EndResult<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 は期待どおりに機能しますが、イテレータの場合は実際の例を見つけることさえできません...
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 {...}
そしてContent
aa @NodeEntity
Pojoです。
Mark Petersの助けを借りて、私はこのように呼ぶべきであることを学びました
なぜなら、 iterable 自体の具象型ではなく、iterableWithSize
あなたのコンポーネント型に型付けされているからです。Iterable
しかし、テストが実行されると、
1) 何か間違ったことをしている、または 2) hamcrest または 3) Spring Data Neo4j にバグがあるかどうかを把握しようとして、手元のオブジェクトをチェックしましたが、次のように問題ないようですIterable
:
だから、ハムクレストに問題があると結論付けているのではないでしょうか。IsIterableWithSize で似たようなことを試した人はいますか?
unit-testing - 注文によるコレクションの同等性のテスト
の下にあるインターフェースの一部を返すメソッドをチェックする簡単なテストを書いていますCollection
。このコレクションの内部表現を可能な限り抽象化しようとしているので、このテストは、メソッドが戻るときとの両方の場合に合格しList
ますSet
。
はSet
注文(LinkedHashSet
またはLinkedHashMap
裏付けSet
)されることになっているので、私も注文をテストする必要があります。だから一般的に私はこのようなテストを書きたいと思います:
これは、両方のコレクションが「同じ」でない場合(つまり、同じ順序で同じ値)に失敗します。
この場合、Hamcrestライブラリが役立つことがわかりましたが、ドキュメントに固執しています。どんな助けでもいただければ幸いですが、可能であれば、CollectionTestUtilや自分のHamcrestを書かMatcher
ないようにします。
java - String.matches メソッドで lambdaj を使用する
Collection<String>
lambdaj と String.matches メソッドを使用してフィルター処理する方法。
与えられた例はこれよりも複雑であるため、私はラムダジに慣れておらず、ばかげていると感じています。
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にプッシュすることができますか?