5

BeanUtils を使用して、一部の DTO クラスをドメイン クラスにマップしています (およびその逆)。(BeanUtils コピー プロパティを使用)

コードをテストしたい。誰かが DTO またはドメイン クラスのいずれかに追加のプロパティを作成した場合に失敗するテストを作成するにはどうすればよいですか。

私がまだ取り組んでいる私の試みは、BeanUtils.getPropertyDescriptors(class) をトラバースし、対応する getter メソッドを見つけて、各クラス (DTO およびドメイン) の等価性をテストすることです。

何かご意見は?

プロジェクトの依存関係の制約により、Dozer のようなものは使用したくありません。Spring 3 の beanutils を使用しています。

4

1 に答える 1

1

追加のプロパティのテストだけに関心がある場合、テスト メソッドは次のようになります。

void assertSameProperties(Class class1, Class class2) {
    Set<String> properties = new HashSet<String>();
    for (PropertyDescriptor prop : BeanUtils.getPropertyDescriptors(class1)) {
        properties.add(prop.getName());
    }
    for (PropertyDescriptor prop : BeanUtils.getPropertyDescriptors(class2)) {
        if (!properties.remove(prop.getName()) {
            fail("Class " + class2.getName() + " has extra property " + prop.getName());
        }
    }
    if (!properties.isEmpty()) {
        fail("Class " + class1.getName() + " has extra properties");
    }

}

マッピング自体のテストに関心がある場合は、両方のクラスに存在する各プロパティに対して getter を呼び出し、それらの結果が等しいかどうかをチェックするアプローチが機能するはずです。ただし、「クラス」プロパティについて覚えておいてください。その値は、異なるクラスのオブジェクトでは確かに異なります。

于 2011-10-21T10:30:56.563 に答える