任何服务类都不应使用Java.util.date

任何服务类都不应使用Java.util.date,java,unit-testing,archunit,Java,Unit Testing,Archunit,您好,我想为服务类编写一个ArchUnit测试,这样字段就不允许是Date,到目前为止,我可以通过执行以下操作完成一些接近我需要的内容: @Test public void all_public_methods_in_the_controller_layer_should_return_API_response_wrappers2() { JavaClasses importedClasses = new ClassFileImporter().importPackage

您好,我想为服务类编写一个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);
    }
但是,即使类中包含日期字段,为字段编写类似的测试也只能通过

例如:

  @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);

    }

了解具体细节后,我认为您的问题可以简化为如何防止某些类具有java.util.Date类型的字段

在一个小测试项目中,我准备了以下基本规则,它似乎起了作用:

ArchRuleDefinition.noFields().should().haveRawType(Date.class)

了解具体细节后,我认为您的问题可以简化为如何防止某些类具有java.util.Date类型的字段

在一个小测试项目中,我准备了以下基本规则,它似乎起了作用:

ArchRuleDefinition.noFields().should().haveRawType(Date.class)

您的类中允许使用java.util吗?如果不允许,我们可能会简化一些。您的类中是否允许使用java.util.Date或java.util.Date?如果没有,我们可能会简化这一点。