Никакие классы обслуживания не должны использовать Java.util.date

Привет, я хочу написать тест ArchUnit для классов обслуживания, чтобы поля не могли быть Date, пока что я могу выполнить что-то близкое к тому, что мне нужно, выполнив следующие действия:

@Test
    public void all_public_methods_in_the_controller_layer_should_return_API_response_wrappers2() {
        JavaClasses importedClasses = new ClassFileImporter().importPackages("com.some.package");
        methods().that().areDeclaredInClassesThat().areAnnotatedWith(XmlAccessorType.class).and().areDeclaredInClassesThat().resideInAPackage("..webservice..").and().arePublic().and().haveNameMatching("Date").should().haveRawReturnType(SomeOtherDate.class).because("bla bla bla").check(importedClasses);
    }

Но написание аналогичных тестов для Fields просто проходит, даже если классы содержат поля Date.

пример:

  @Test
    public void some_architecture_rule22() {
        JavaClasses importedClasses = new ClassFileImporter().importPackages("com.some.package");
        fields().that().areDeclaredIn(SomeClass.java).and().arePrivate().and().haveRawType(Date.class).should().haveRawType(SomeOtherDate.class).because("bla bla bla").check(importedClasses);

    }

1 ответ

Зная конкретные детали, я думаю, что ваш вопрос можно упростить до того, как запретить некоторым классам иметь поля типа java.util.Date.

В небольшом тестовом проекте я подготовил следующее ArchRule, и оно, похоже, работает:

ArchRuleDefinition.noFields().should().haveRawType(Date.class)
Другие вопросы по тегам