1

我有一个具有不同配置文件的 Spring 应用程序,例如“开发”和“生产”。我用 Archunit 测试架构。我有类似的测试

@Test
public void Services_should_only_be_accessed_by_Controllers() {
    JavaClasses importedClasses = new ClassFileImporter().importPackages("com.mycompany.myapp");

    ArchRule myRule = classes()
        .that().resideInAPackage("..service..")
        .should().onlyBeAccessed().byAnyPackage("..controller..", "..service..");

    myRule.check(importedClasses);
}

我的包中的类有不同的配置文件。我怎样才能只包含带有 Spring Profile“生产”的类?

4

1 回答 1

1
JavaClasses importedClasses = new ClassFileImporter().importPackages("com.mycompany.myapp")
                .that(DescribedPredicate.describe("profile", clazz -> 
                        clazz.isAnnotatedWith(Profile.class) && 
                                Arrays.asList(clazz.getAnnotationOfType(Profile.class).value()).contains("production")));

于 2020-07-23T09:50:34.133 回答