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 の新機能です