3

我目前正在扩展Degraph以检查是否违反依赖规则。

到目前为止,我已经为ScalaTest创建了匹配器,因为这是我最喜欢的 JVM 测试库。但许多其他人更喜欢或不得不使用其他库。所以我也想为那些提供匹配器(或任何适当的等价物)。

另一方面,我很懒,所以我不想为每个可以想象的库提供匹配器。

所以问题是:

是否有某种匹配器库可以在所有(或大多数/许多)测试库中使用?或者也许是一个将 Hamcrest 匹配器转换为所有其他库的匹配器的包装器?

我想支持的库(按重要性顺序):

  • JUnit
  • ScalaTest
  • 最受欢迎的 Groovy 测试库
  • Clojure 最受欢迎的测试库
  • 规格2
  • 测试NG
4

1 回答 1

1
  1. 我见过的每一个单元测试框架都会失败一个抛出异常的测试。
  2. HamcrestassertThat(T value, Matcher<T> matcher)会抛出一个AssertionErrorif matcher.matches(value)returns false

因此,Hamcrest 应该与大多数测试框架一起开箱即用。对于其他库,例如用于构建模拟对象,您需要Matcher本地使用 Hamcrest 的对象或编写集成层。一种方法是创建一种方法来装饰任何匹配器,例如*,

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 回答