我同意其他发帖人的观点,即 100% 的代码覆盖率可能会被误导。但我不得不承认,对新编写的核心代码获得 100% 的覆盖率感到满意。
幸运的是,由于所有枚举都扩展了相同的“类”,因此您可以在朋友反思的帮助下实现 100%。
只需在类中添加以下静态方法供测试人员调用,使用 [EnumTypeName].class 作为参数。
public static void superficialEnumCodeCoverage(Class<? extends Enum<?>> enumClass) {
try {
for (Object o : (Object[])enumClass.getMethod("values").invoke(null)) {
enumClass.getMethod("valueOf", String.class).invoke(null, o.toString());
}
}
catch (Throwable e) {
throw new RuntimeException(e);
}
}
假设这个静态函数是在一个名为“Shared”的类中实现的,你只需要为每个枚举包含这一行:
Shared.superficialEnumCodeCoverage(UserRole.class);
关键词是“肤浅的”。