ハムクレストコモンコアマッチャー
1. 概要
このクイックチュートリアルでは、シンプルで表現力豊かなテストケースを作成するための人気のあるHamcrestフレームワークのCoreMatchersクラスについて説明します。
アイデアは、assertステートメントを自然言語のように読ませることです。
2. ハムクレストのセットアップ
pom.xml ファイルに次の依存関係を追加することで、MavenでHamcrestを使用できます。
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>java-hamcrest</artifactId>
<version>2.0.0.0</version>
<scope>test</scope>
</dependency>
このライブラリの最新バージョンは、常にここにあります。
3. 一般的なコアマッチャー
3.1. is(T) と is(マッチャー )。
The is(T) 同等性をチェックするためのパラメータとしてオブジェクトを取り、 is(マッチャー
これはほとんどすべての方法で使用できます:
String testString = "hamcrest core";
assertThat(testString, is("hamcrest core"));
assertThat(testString, is(equalTo("hamcrest core")));
3.2. equalTo(T)
equalTo(T)は、オブジェクトをパラメーターとして受け取り、その同等性を別のオブジェクトと照合します。 これはis(Matcher
String actualString = "equalTo match";
List<String> actualList = Lists.newArrayList("equalTo", "match");
assertThat(actualString, is(equalTo("equalTo match")));
assertThat(actualList, is(equalTo(Lists.newArrayList("equalTo", "match"))));
equalToObject(オブジェクトオペランド)– を使用することもできます。これは、同等性をチェックし、2つのオブジェクトが同じ静的タイプであることを強制しません。
Object original = 100;
assertThat(original, equalToObject(100));
3.3. not(T) と not(マッチャー )。
The not(T) と not(マッチャー
String testString = "troy kingdom";
assertThat(testString, not("german kingdom"));
assertThat(testString, is(not(equalTo("german kingdom"))));
assertThat(testString, is(not(instanceOf(Integer.class))));
3.4. nullValue() と nullValue(クラス )。
nullValue()は、検査対象のオブジェクトに対してnull値をチェックします。 The nullValue(クラス
Integer nullObject = null;
assertThat(nullObject, is(nullValue()));
assertThat(nullObject, is(nullValue(Integer.class)));
3.5. notNullValue() と notNullValue(クラス )。
Integer testNumber = 123;
assertThat(testNumber, is(notNullValue()));
assertThat(testNumber, is(notNullValue(Integer.class)));
3.6. instanceOf(Class> )。
The instanceOf(Class> )。 調べたオブジェクトが指定されたインスタンスの場合に一致しますクラスタイプ。
確認するために、このメソッドは isIntance(Object)のクラスクラスを内部的に呼び出します。
assertThat("instanceOf example", is(instanceOf(String.class)));
3.7. isA (クラスタイプ)
The isA(クラス
assertThat("Drogon is biggest dragon", isA(String.class));
3.8. sameInstance()
sameInstance()は、2つの参照変数がヒープ内の同じオブジェクトを指している場合に一致します。
String string1 = "Viseron";
String string2 = string1;
assertThat(string1, is(sameInstance(string2)));
3.9. any(クラス )。
The any(クラス
assertThat("test string", is(any(String.class)));
assertThat("test string", is(any(Object.class)));
3.10. allOf(Matcher <? T>…)およびanyOf(Matcher <? T>…を拡張します
使用できます
String testString = "Achilles is powerful";
assertThat(testString, allOf(startsWith("Achi"), endsWith("ul"), containsString("Achilles")));
The
String testString = "Hector killed Achilles";
assertThat(testString, anyOf(startsWith("Hec"), containsString("baeldung")));
3.11. hasItem(T) と hasItem(Matcher <? T>)を拡張します
調べた場合、これらは一致します反復可能コレクションは、内部の特定のオブジェクトまたはマッチャーと一致します hasItem() また
これがどのように機能するかを理解しましょう:
List<String> list = Lists.newArrayList("java", "spring", "baeldung");
assertThat(list, hasItem("java"));
assertThat(list, hasItem(isA(String.class)));
同様に、 私たちもできますを使用して複数のアイテムに対してアサートする hasItems(T…) と
List<String> list = Lists.newArrayList("java", "spring", "baeldung");
assertThat(list, hasItems("java", "baeldung"));
assertThat(list, hasItems(isA(String.class), endsWith("ing")));
3.12. 両方(マッチャー<? T>)とどちらか(Matcher <? T>)を拡張します
名前が示すように、
String testString = "daenerys targaryen";
assertThat(testString, both(startsWith("daene")).and(containsString("yen")));
と
String testString = "daenerys targaryen";
assertThat(testString, either(startsWith("tar")).or(containsString("targaryen")));
4. 弦 比較
containsString(String)または containsStringIgnoringCase(String)を使用して、実際の文字列にテスト文字列が含まれているかどうかをアサートできます。
String testString = "Rhaegar Targaryen";
assertThat(testString, containsString("aegar"));
assertThat(testString, containsStringIgnoringCase("AEGAR"));
または、 startupsWith(String)および startupsWithIgnoringCase(String)を使用して、実際の文字列がテスト文字列で始まるかどうかをアサートします。
assertThat(testString, startsWith("Rhae"));
assertThat(testString, startsWithIgnoringCase("rhae"));
endsWith(String)または endsWithIgnoringCase(String)を使用して、実際の文字列がテスト文字列で終わるかどうかをアサートすることもできます。
assertThat(testString, endsWith("aryen"));
assertThat(testString, endsWithIgnoringCase("ARYEN"));
5. 結論
この記事では、HamcrestライブラリのCoreMatchersクラスのさまざまなメソッドについて説明しました。
そして、いつものように、例のソースコードはGitHubのにあります。