4

我有一个在 groovy/spock 中测试的 java 类。java类有一个final字段:

private static final log = Logger.getLogger(...)

我想测试一个方法是否使用这个记录器,最好使用一个模拟。问题是这个字段是最终的,所以我不能只设置它。我知道有一些解决方法,例如:

modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

但这些都是可怕的黑客。有没有更时髦的方法来做到这一点?

4

1 回答 1

-1

您可以尝试通过配置记录器而不是模拟它来测试日志记录。

也许,将您的记录器配置为将输出定向到文件。然后编写一个自定义的 Groovy 布尔函数来检查您可以从 spock 测试中调用的文件内容。

Java 日志配置非常灵活,因此如果需要,您可能会想出一些避免使用临时文件的方法。

于 2013-07-24T14:50:24.997 回答