1. ホーム
  2. java

[解決済み] JUnitとHamcrestを一緒に使うには?

2023-03-26 10:37:51

質問

JUnit 4.8がHamcrest matcherとどのように連携するのか理解できません。いくつかの matcher が junit-4.8.jar の中で org.hamcrest.CoreMatchers . 同時に、いくつかの その他 のマッチャーもあります。 hamcrest-all-1.1.jar org.hamcrest.Matchers . では、どこに行けばいいのでしょうか?私は明示的にプロジェクトにhamcrest JARを含めると、JUnitによって提供されるマッチャーを無視するのでしょうか?

特に、私が興味を持っているのは empty() マッチャーに興味があるのですが、これらのジャーのどれにも見当たりません。私は何か他のものが必要ですか?)

そして哲学的な質問ですが、なぜJUnitは org.hamcrest パッケージを配布したのでしょうか?

どのように解決するのですか?

junitはassertThat()という新しいチェックアサートメソッドを提供しており、これはMatcherを使用します。

これを使うために、junitにはいくつかのコアマッチャーが含まれています。基本的なテストであれば、これらから始めることができます。

より多くのマッチャーを使いたい場合は、自分で書くか、hamcrest libを使うことができます。

以下の例では、ArrayListに対してempty matcherを使用する方法を示しています。

package com.test;

import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class EmptyTest {
    @Test
    public void testIsEmpty() {
        List myList = new ArrayList();
        assertThat(myList, is(empty()));

    }
}

(ビルドパスにhamcrest-all.jarを入れました)