Search in sources :

Example 71 with ArchRule

use of com.tngtech.archunit.lang.ArchRule in project checkstyle-backport-jre8 by rnveach.

the class ArchUnitTest method nonProtectedCheckMethodsTest.

/**
 * The goal is to ensure all classes of a specific name pattern have non-protected methods,
 * except for those which are annotated with {@code Override}. In the bytecode there is no
 * trace anymore if this method was annotated with {@code Override} or not (limitation of
 * Archunit), eventually we need to make checkstyle's Check on this.
 * Test contains assertions in the callstack, but TeamCity inspection does not see them.
 *
 * @noinspection JUnitTestMethodWithNoAssertions
 */
@Test
public void nonProtectedCheckMethodsTest() {
    // This list contains methods which have been overridden and are set to ignore in this test.
    final String[] methodsWithOverrideAnnotation = { "processFiltered", "getMethodName", "mustCheckName", "postProcessHeaderLines", "getLogMessageId" };
    final String ignoreMethodList = String.join("|", methodsWithOverrideAnnotation);
    final JavaClasses importedClasses = new ClassFileImporter().withImportOption(ImportOption.Predefined.DO_NOT_INCLUDE_TESTS).importPackages("com.puppycrawl.tools.checkstyle.checks");
    final ArchRule checkMethodsShouldNotBeProtectedRule = methods().that().haveNameNotMatching(".*(" + ignoreMethodList + ")").and().areDeclaredInClassesThat().haveSimpleNameEndingWith("Check").and().areDeclaredInClassesThat().doNotHaveModifier(JavaModifier.ABSTRACT).should().notBeProtected();
    checkMethodsShouldNotBeProtectedRule.check(importedClasses);
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) JavaClasses(com.tngtech.archunit.core.domain.JavaClasses) ClassFileImporter(com.tngtech.archunit.core.importer.ClassFileImporter) Test(org.junit.jupiter.api.Test)

Example 72 with ArchRule

use of com.tngtech.archunit.lang.ArchRule in project sirius-web by eclipse-sirius.

the class CodingRulesTests method classesImplentingPayloadShouldBeFinal.

@Test
public void classesImplentingPayloadShouldBeFinal() {
    // @formatter:off
    ArchRule rule = ArchRuleDefinition.classes().that().areAssignableTo(IPayload.class).and().areNotInterfaces().should().haveModifier(JavaModifier.FINAL).andShould().haveOnlyFinalFields();
    // @formatter:on
    rule.check(this.getClasses());
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) Test(org.junit.jupiter.api.Test)

Example 73 with ArchRule

use of com.tngtech.archunit.lang.ArchRule in project sirius-web by eclipse-sirius.

the class RepositoryTests method repositoriesShouldOnlyBeInterfaces.

@Test
public void repositoriesShouldOnlyBeInterfaces() {
    // @formatter:off
    ArchRule rule = ArchRuleDefinition.classes().that().resideInAPackage(ArchitectureConstants.SIRIUS_WEB_PERSISTENCE_ROOT_PACKAGE).and().areAssignableTo(Repository.class).should().beInterfaces();
    // @formatter:on
    rule.check(ArchitectureConstants.CLASSES);
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) Test(org.junit.Test)

Example 74 with ArchRule

use of com.tngtech.archunit.lang.ArchRule in project BitBook by C-Otto.

the class ArchUnitIT method services_must_not_access_dto_classes_directly.

@Test
void services_must_not_access_dto_classes_directly() {
    ArchRule rule = ArchRuleDefinition.noClasses().that().haveSimpleNameEndingWith("Dto").or().haveSimpleNameEndingWith("DTO").should().dependOnClassesThat().haveSimpleNameEndingWith("Service");
    rule.check(importedClasses);
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) Test(org.junit.jupiter.api.Test)

Example 75 with ArchRule

use of com.tngtech.archunit.lang.ArchRule in project BitBook by C-Otto.

the class ArchUnitIT method daos_are_transactional.

@Test
void daos_are_transactional() {
    ArchRule rule = ArchRuleDefinition.classes().that().haveSimpleNameEndingWith("DaoImpl").should().beAnnotatedWith("javax.transaction.Transactional").orShould().beAnnotatedWith("org.springframework.transaction.annotation.Transactional");
    // https://stackoverflow.com/q/26387399/947526
    rule.check(importedClasses);
}
Also used : ArchRule(com.tngtech.archunit.lang.ArchRule) Test(org.junit.jupiter.api.Test)

Aggregations

ArchRule (com.tngtech.archunit.lang.ArchRule)141 Test (org.junit.jupiter.api.Test)90 Test (org.junit.Test)37 ArchTest (com.tngtech.archunit.junit.ArchTest)19 CompositeArchRule (com.tngtech.archunit.lang.CompositeArchRule)19 JavaClasses (com.tngtech.archunit.core.domain.JavaClasses)18 UseDataProvider (com.tngtech.java.junit.dataprovider.UseDataProvider)13 ClassFileImporter (com.tngtech.archunit.core.importer.ClassFileImporter)12 DynamicTest (org.junit.jupiter.api.DynamicTest)12 TaskanaIntegrationTest (testapi.TaskanaIntegrationTest)12 EvaluationResult (com.tngtech.archunit.lang.EvaluationResult)6 JavaClass (com.tngtech.archunit.core.domain.JavaClass)5 Immutable (org.eclipse.sirius.components.annotations.Immutable)5 ArchConfiguration (com.tngtech.archunit.ArchConfiguration)4 JavaField (com.tngtech.archunit.core.domain.JavaField)4 CanBeAnnotatedTest (com.tngtech.archunit.core.domain.properties.CanBeAnnotatedTest)4 ArchCondition (com.tngtech.archunit.lang.ArchCondition)3 ClassViolatingCodingRules (com.tngtech.archunit.example.layers.ClassViolatingCodingRules)2 ImmutableProtocol (io.camunda.zeebe.protocol.record.ImmutableProtocol)2 Record (io.camunda.zeebe.protocol.record.Record)2