ファイルシステムとネットワークアクセスなしでjunit環境を作成できますか?テストケースに対してより厳しいルールを適用したいと思います。
理想的には、これはMavenで構成可能であり、デフォルトのテストフェーズで機能します。
この回答https://stackoverflow.com/a/309427/116509SecurityManager
に基づいて、テストセットアップを設定し、分解時に元を復元できると思います。
ただし、IMHO、たとえば、テスト対象のクラスが実際にその契約の一部としてファイルを作成する場合、一部の単体テストはファイル システムにアクセスできるようにする必要があります。(依存性注入を使用して、ファイルが一時ディレクトリに作成されるようにすることができます)。同様に、HTTP を使用するクラスの適切な単体テストでは、HTTP エンドポイントに対してテストする必要があります。そうしないと、すべてを嘲笑するだけになり、テストの価値がなくなります。デフォルトではアクセスを拒否する必要があり、開発者はこの種のテストのアクセス許可を具体的にオーバーライドする必要があると思います。
ファイル システム/ネットワーク アクセスに対するこれらの依存関係を処理する一般的な方法は、テスト コンテキストでそれらをモック化することです。このようにして、実際のコードは通常のチャネルを通過できますが、テストはファイル システムやネットワークに依存する必要がありません。
この多くを行うのに役立つモック フレームワークを調べてください。この種のテストを有効にすると、コードもきれいになります。:)
Ashcroftを使用して、ファイル システムやその他のリソースへのアクセスをテストから禁止できます。Java セキュリティ マネージャを使用して、特定のリソースへのアクセスを制限します。
もう 1 つのアプローチは、AspectJ を使用して、特定の API またはパッケージの呼び出しを禁止するいくつかのアドバイスを実装することです。
JUnit環境が何を意味するのかわかりませんが、単体テストを実行するためにファイルシステムやネットワークアクセスは必要ありません。一方、ネットワーク API とファイルシステム API を使用するコードをテストしている場合は、問題が発生する可能性があります。その場合、コードをより小さなテスト可能なチャンクに抽象化する必要があるかもしれません。ネットワークとファイルシステムの API が単体テストで機能しているかどうかをテストするべきではありません。これらは統合テストです。単体テストでのみコードをテストする必要があります。