我有一个java类,我在groovy / spock中测试。 java类有一个final字段:
private static final log = Logger.getLogger(...)
我想测试方法是否使用此记录器,最好使用mock。问题是这个领域是最终的,所以我不能只设置它。我知道有一些解决方法,如:
modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
但这些都是糟糕的黑客。是否有一种更加时髦的方式来做到这一点?
答案 0 :(得分:-1)
您可以尝试通过配置记录器来测试日志记录,而不是模拟它。
或许,配置您的记录器以将输出定向到文件。然后编写一个自定义的Groovy布尔函数,用于检查可以从spock测试中调用的文件内容。
Java日志记录配置非常灵活,因此如果需要,您可能会想出一些可以避免使用临时文件的内容。