12

doubleの2つの配列を比較したいと思います。バニラJUnitを使用して、次のことができます。

double[] a = new double[]{1.0, 2.0, 3.0};
double[] b = new double[]{1.0, 2.0, 3.0};
assertEquals(a, b, 1e-10);

できればカスタムマッチャーを作成せずに、Hamcrestを使用してこれを行う方法を知りたいです(可能な場合)。配列内の各要素に「近い」マッチャーを使用するのと似ています。

4

1 に答える 1

10

a に変更aすると、次のヘルパー メソッドでDouble[]実行できます。assertThat(a, arrayCloseTo(b, .2));

public static Matcher<Double[]> arrayCloseTo(double[] array, double error) {
    List<Matcher<? super Double>> matchers = new ArrayList<Matcher<? super Double>>();
    for (double d : array)
        matchers.add(closeTo(d, error));
    return arrayContaining(matchers);
}

プリミティブ配列でも同様に実行できますが、そのためにはカスタム マッチャーが必要になります。

于 2012-05-16T18:28:40.977 に答える