LoginSignup
1
0

More than 3 years have passed since last update.

集約の整合性についてArchUnitを用いてテストする

Last updated at Posted at 2020-12-12

「集約に含まれるオブジェクトは集約ルートからのみ依存される」ことをテストしてみる。

テストコード


@AnalyzeClasses(packages = "com.example")
public class DomainObjectTest {

    @ArchTest
    static ArchRule aggregate_object_be_depended_on_only_root_object =
        noClasses()
            .that().resideInAPackage("com.example")
            .should().dependOnClassesThat(new DescribedPredicate<>("domain.hoge") {
                @Override
                public boolean apply(final JavaClass clazz) {
                    return clazz.getPackageName().startsWith("com.example.domain.hoge")
                        && clazz.getSimpleName().equals("HogeRoot");
                }
            });

集約が特定のパッケージ配下に含まれている前提で、集約ルート以外のオブジェクトが他のクラスから依存されていないことをテストしている。

この場合だと、一時的な参照を渡すことも出来ないため、dependOnClassThatの代わりにcallMethodを用いて判定しても良いかもしれない。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0