Никакие классы обслуживания не должны использовать 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)