报告将应用程序服务分配到 static final 字段/属性的情况。

此类分配会导致全局状态,使得在测试中无法删除一个应用程序并设置另一个应用程序,因此,同一进程中的重复测试可能会失败。 唯一的例外是用来存储虚拟/默认实例的显式构造函数调用。

避免存储服务的推荐方式是在本地检索服务或将其包装在 java.util.function.Supplier 中。

示例:


  // 不正确的方式
  private static final ManagingFS ourInstance = ApplicationManager.getApplication().getService(ManagingFS.class);

  // 正确的方式
  private static final Supplier<ManagingFS> ourInstance = CachedSingletonsRegistry.lazy(() -> {
    return ApplicationManager.getApplication().getService(ManagingFS.class);
  });

  // 例外
  private static final UniqueVFilePathBuilder DUMMY_BUILDER = new UniqueVFilePathBuilder()

2023.2 最新变化