我有几个junit测试没有任何assert
语句。 Junit刚刚通过或
预计exception
。但是由于这个PMD抱怨测试应该包括assert
或验证PMD.JUnitTestsShouldIncludeAssertOrVerify
。
所以我定义了一个静态的最终字符串常量,因为有很多方法。
private static final String PMD_WARNING = "PMD.JUnitTestsShouldIncludeAssertOrVerify";
@SuppressWarnings(PMD_WARNING)
public void test...{
}
但这似乎不起作用。它正在编译正常,但PMD
检查不再识别SuppressWarnings
注释而失败。如果我直接将文字字符串作为参数包含在SuppressWarnings
注释中而不是使用常量,那么它可以正常工作。
它有什么理由不起作用吗?
答案 0 :(得分:1)
包括@SupressWarnings在内的所有注释都将在编译时进行评估。
但是第一次加载此类时会计算静态最终值。
所以在@SupressWarnings评估期间的编译时,你的常量字符串尚未加载并且可用。