验证/确保测试代码仅在测试中调用,而不是在生产代码

时间:2017-06-27 14:47:56

标签: java maven testing checkstyle rule

在我们的一个工作项目中,我们已经开始使用Guava's VisibleForTesting来注释“助手”方法,这些方法只能用于测试(例如,Setter允许服务模拟被“注入”)。在生产中,应用程序应该使用Spring的Autowired来“获取”它的服务。

有没有办法检查用 VisibleForTesting 注释的代码是否只在测试代码中调用(静态分析,如果有人通过反射尝试有趣的东西,那么这不是吗?)

1 个答案:

答案 0 :(得分:0)

对于任何遭受同样谬误的人(在这个特殊情况下只有Setters用于测试):

  1. 使用构造函数注入
  2. 如果由于某些不明原因,生产代码无法修改,Mockito的InjectMocks(至少)会保持您的生产代码清洁
  3. 基本原理:您无法阻止项目构建环境中的其他人 使用此“仅测试”代码,因此任何有关静态代码分析的工作都会产生安全错觉(适合您)如果某人真的“误导”了那段代码,那就更令人惊讶了。