我想使用ArchUnit来强制使用SLF4J 日志框架并避免简单的System.out
调用。此外,我想避免使用任何其他日志记录框架。我该如何实施这样的检查?
目前我写这个测试
class EnforceSlf4JLoggingTest {
private final JavaClasses importedClasses = new ClassFileImporter()
.withImportOption(new ImportOption.DoNotIncludeTests())
.importPackages("... my packages ...");
@Test
public void classesShouldNotUseJavaUtilLogging() {
NO_CLASSES_SHOULD_USE_JAVA_UTIL_LOGGING.check(importedClasses);
}
@Test
public void classesShouldNotUseSystemOutLogging() {
noClasses()
.should()
.dependOnClassesThat()
.belongToAnyOf(java.lang.System.class)
.because("use SLF4J instead")
.check(importedClasses);
}
}
但它实际上并没有强制使用 SLF4J,而只是限制java.unit.logging
使用并防止对java.lang.System
类有依赖性(实际System.out
常量所在的位置)。
我的情况是否更优雅的解决方案?