当前位置: 首页 > 知识库问答 >
问题:

我如何用Archunit只测试带有某些Spring概要文件的类

郭琦
2023-03-14

我有一个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概要文件“Production”的类?

共有1个答案

巴帅
2023-03-14
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")));

 类似资料:
  • 我有一堆bean的Spring boot应用程序。他们的数量一天比一天增加。所以我总是需要模拟新的bean,否则测试就会失败。所以,问题很简单:如何强制Spring Boot测试只使用应用程序上下文中的几个特定bean而不是全部?

  • 我正在尝试将Spring Boot配置文件与Maven配置文件集成,但由于某些原因,总是会选择默认配置文件。 MVN清洁测试-Dspring.profiles.active=产品(工作) 日志: mvn干净测试-prod(不起作用,总是选择默认配置文件) 日志: pom。xml src/测试/资源/应用程序。属性 src/test/resources/application-dev.propert

  • 我编写了我的第一个ArchUnit测试: 这个项目是用Maven构建的,所以类在不同的目录中。 将名称以“tests”或其他东西结尾的类分开是不够的,因为有许多类不是测试,而是只存在于测试类路径中。

  • 在我们的组织中,我们有几个微服务和许多库。 有些库定义的“public”类不用于公共用途-仅在多个包中的库内部(因此不能是包私有的) 我想添加一些类似于Kotlin的“内部”修饰符的东西——一个检查风格规则/注释处理器/测试组件,用于验证消费者应用程序没有导入这些类。 例如,我将它们标记为@ForInternalUsageOnly或放入包com中。奥罗格。迈里布。内部使用 什么是非复制粘贴的(例如

  • 在使用JUnit进行单元测试期间,Spring autowiring只适用于以下文件: 我能做些什么来扫描所有的文件进行自动跟踪(而不仅仅是在测试目录下)? 进一步资料: 我使用Spring MVC,Hibernate和Maven 我应该添加其他东西来使它工作吗?

  • 在ArchUnit-Test中,是否有可能从分层测试条件中排除特定的类? 希望我能说清楚...