10

Java 8 で導入されたインターフェースのデフォルト メソッドの実装について少し混乱しています。インターフェースとその実装メソッド専用の JUnit テストを作成する必要があるかどうか疑問に思っていました。グーグルで検索してみましたが、ガイドラインが見つかりませんでした。お知らせ下さい。

4

1 に答える 1

11

メソッドの複雑さに依存します。コードが簡単な場合は、実際には必要ありません。たとえば、次のようになります。

public interface MyInterface {
    ObjectProperty<String> ageProperty();
    default String getAge() {
        return ageProperty().getValue();
    }
}

コードがより複雑な場合は、単体テストを作成する必要があります。たとえば、次のデフォルト メソッドは次のComparatorとおりです。

public interface Comparator<T> {
    ...
    default Comparator<T> thenComparing(Comparator<? super T> other) {
        Objects.requireNonNull(other);
        return (Comparator<T> & Serializable) (c1, c2) -> {
            int res = compare(c1, c2);
            return (res != 0) ? res : other.compare(c1, c2);
        };
    }
    ...
}

それをテストする方法は?

インターフェイスからデフォルト メソッドをテストすることは、抽象クラスをテストすることと同じです。

これはすでに回答済みです。

于 2014-09-16T09:51:56.597 に答える