1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

アーキテクチャテストAdvent Calendar 2020

Day 12

集約の整合性について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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?