問題タブ [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 - ワイルドカードでassertArrayEquals()を使用しますか?
UDPパケットとして送信するために使用されるバイト配列を生成するコードをテストしたいと思います。
テストですべてのバイト(ランダムなバイト、タイムスタンプなど)を再現することはできませんが、事前に決定できるバイトをテストしたいと思います。
JUnit 4.8(およびMockito 1.8)を使用して次のようなことが可能ですか?
上記のサンプルはもちろん機能していません。私はである種のワイルドカードを使用する方法を探していますassertArrayEquals()
。
PS:今のところ私の唯一の選択肢は、各バイトを個別にチェックすることです(そしてランダムなバイトを省略します)。しかし、これは静かで退屈で、実際には再利用できません。
JB Nizetからの回答のおかげで、次のコードが適切に配置され、正常に機能しています。
java - ハムクレストはそれがあいまいであると主張しますか?
私は大学からサンプルコードを入手し、プロジェクトをインポートして、テストを実行しようとしました: The method assertThat(Integer, Matcher) is ambiguous for the type MyClass
すべての assertThat は同じエラーメッセージで赤くマークされているので、問題を説明する最も単純なテストを作成しようとしました:
assertThat をスクロールすると、次のメッセージが表示されます。
グーグルとスタックオーバーフローを検索しましたが、同じ問題を抱えている人は見つかりませんでした...助けてください。
EDIT1:
解決:
import static org.junit.Assert.*; // この行を削除
java - Generics Hell - どうすれば joda.DateTime を Hamcrest Matcher.greaterThan に渡すことができますか?
JodaTime は
それはまでその方法を動作します
ハムクレストは
私が試したら
次に、コンパイルエラーが発生します(Eclipseが最も手がかりを与えます)
タイプ Matchers のジェネリック メソッド greaterThan(T) は、引数 (DateTime) には適用されません。推定された型 DateTime は、境界付きパラメーターの有効な代替ではありません >
の署名はgreaterThan
実際には
? そして、生にキャストする以外にこれらを組み合わせる方法はありComparable
ますか?
java - オブジェクトのハムクレストマッチャー...パラメータ
クラスのメソッドを取得しました
カスタムのハムクレストマッチャーがあります
メソッド1に渡されたオブジェクトに一致する期待値の記述方法
実際の呼び出しは
渡されたオブジェクトと期待されるオブジェクトは同じですが、実際に渡されたパラメーターはsomeObject1ではなく、SomeObject [] {someObject1}(1つのオブジェクトのみを持つ配列-someObject1)であるため、SomeObjectMatcherは失敗しますか?チェーンに新しいマッチャーを追加する方法はありますか?
java - EclipseとjavacのHamcrest Matcherコンパイルの違い
hasItem マッチャー内で hamcrest のカスタム マッチャーを利用しようとしています。
マッチャーはこんな感じ
これはEclipse内からは問題なく動作しますが、コマンドラインからmavenでビルドすると例外がスローされます:
これは型消去の問題であり、Eclipse コンパイラとコマンド ラインの違いによるものであることはわかっていますが、それを処理する最善の方法がわかりません。
java - 本番コードでHamcrestマッチャーを使用する方法はありますか?
hamcrestif
を、assertを使用した単体テストではなく、生の本番コードでステートメントで使用するためのシュガーフレームワークとして使用したいと思います。
何かのようなもの
また
AssertThat
エラーをスローせずに、ブール値を返すのと同じです。出来ますか?
java - Mockito の Matcher と Hamcrest Matcher の違いは?
それは簡単なことですが、クラスパスに両方のライブラリが含まれている場合、それらとどちらを使用するかの違いを見つけることができませんか?
java - この assertThat アサーションが AssertionError をスローするのはなぜですか?
課題のテストを作成すると、奇妙なAssertionError
例外が発生します。
単純なケースになるまで変更しました:
順列.java:
junit と hamcrest の両方のソース コードを掘り下げると、junit assertThat はマッチャーでのみ一致を呼び出すことがわかりました。
この場合の Match メソッドは次のとおりです。
arg は「p2」、object は「p1」である必要があります。
( Hamcrestリポジトリで閲覧可能)
デバッガー インスペクションを使用した areEqual メソッドでの比較の結果は次のとおりです。
ご覧のとおり、コードは最後の else 条件に到達してtrue
( p2.equals(p1)
) を返す必要がequalTo(p1).matches(p2)
ありますが、false
ご協力いただきありがとうございます
java - 文字列のハムクレストマッチャー。文字列にはランダムな値が含まれています。
次の文字列をハムクレストマッチャーのいずれかと一致させる方法はありますか?
この文字列はメソッドに渡されます。私はそれに合わせてJMockの期待を使用します。
問題:「72e3a446-2fed-4bda-ac35-34e95ab3dc32」の部分はランダムに生成されたUUIDであり、テストされたメソッド内で生成されます。次のようなものに一致するハムクレストストリングマッチャーはありますか
"{\"messageType\":\"identify\",\"_id\":\"
期待される文字列が、その後に任意の文字列があることで始まり、で終わることと一致する必要があります。",\"address\":\"192.168.0.0\",\"port\":7070}"
編集:解決策
java - ハムクレスト日付マッチャー
特定のテストケースで日付の前後にテストする必要があります。可能であれば、 Hamcrest マッチャーを使用したいと思います。
日付を操作するための Hamcrest (Java) のマッチャーはありますか? もしそうなら、特定の日付マッチャー関数はどのパッケージ/クラスにありますか?