このような代入はグローバルの状態に影響を及ぼし、テストでアプリケーションを削除して別のアプリケーションをセットアップできなくなるため、同じプロセスで繰り返されるテストが失敗する可能性があります。 唯一の例外は、ダミー/デフォルトインスタンスへの明示的なコンストラクターの呼び出しです。
サービスの代入を回避するには、サービスをローカルで取得するか、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 の新機能です