3

私は現在Degraphを拡張して、依存関係ルールの違反をチェックしています。

これまでのところ、ScalaTestのマッチャーを作成しました。これは、JVM 用の私のお気に入りのテスト ライブラリであるためです。しかし、他の多くの人は、他のライブラリを使用することを好むか、使用する必要があります。したがって、それらにもマッチャー(または適切な同等のもの)を提供したいと思います。

一方、私は怠け者なので、考えられるすべてのライブラリにマッチャーを提供したくありません。

質問は次のとおりです。

すべての (またはほとんど/多くの) テスト ライブラリで使用できるある種のマッチャー ライブラリはありますか? それとも、Hamcrest マッチャーを他のすべてのライブラリのマッチャーに変換するラッパーでしょうか?

サポートしたいライブラリ (重要度の高い順):

  • JUnit
  • ScalaTest
  • 最も人気のある Groovy 用のテスト ライブラリ
  • 最も人気のある Clojure のテスト ライブラリ
  • スペック2
  • テストNG
4

1 に答える 1

1
  1. 私が見たすべての単体テスト フレームワークは、例外をスローするテストに失敗します。
  2. Hamcrestはif returnsassertThat(T value, Matcher<T> matcher)をスローします。AssertionErrormatcher.matches(value)false

したがって、Hamcrest はほとんどのテスト フレームワークですぐに使用できるはずです。モック オブジェクトの構築など、他のライブラリについては、Hamcrest のMatcherオブジェクトをネイティブに使用するか、統合レイヤーを作成する必要があります。1 つの方法は、任意のマッチャーをデコレートするメソッドを作成することです。

ArgumentMatcher<T> decorate(final Matcher<T> matcher) {
    return new ArgumentMatcher() {
        public boolean <T> accepts(T value) {
            return matcher.matches(value);
        }
    }
}

* これは、理論上のモッキング API を使用した不自然な例です。

于 2013-04-04T08:36:35.697 に答える