如何在Groovy中设置final字段

时间:2013-07-24 14:21:56

标签: java groovy spock

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

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

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

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

但这些都是糟糕的黑客。是否有一种更加时髦的方式来做到这一点?

1 个答案:

答案 0 :(得分:-1)

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

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

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