1

Java 5 アプリケーションを修正している状況があり、追加のテスト (統合テストに隣接する単体テスト) を追加して、正しく機能していることを確認したいと考えています。オペレーティング システムが提供する実際のファイル システムからアプリケーションを完全に分離する必要があり、後でファイル アクセス パターンと新しいファイル コンテンツを確認したいと考えています。完全に制御された環境で、Java 7 またはその他のバージョンで単体テストを実行できます。必要なのは、最終的なアプリケーションが Java 5 と互換性があることだけです。つまり、動作するようなコードが必要ですnew File(...)

これは、Java 7 を再構成したり、適切なプロバイダーを内部に追加したりするなど、ブラック マジック (モック フレームワークを操作するバイト コードなど) に頼らずに実行できますか?

4

1 に答える 1

0

-Xbootclasspathオプションを使用して File クラスをモックできることを確認してください。ただし、ライセンスの問題を考慮する必要があり、必要なすべてのテストを行うことはまだできません。

アプリケーションにとってファイル システム操作が重要な場合は、ファイル システム アクセス専用の抽象化レイヤーを作成する必要があります。どういうわけかJava IO APIを複製しますが、アプリケーションがIO APIとどのようにやり取りするかをテストできます.

ただし、高度な技術を使用している場合や、高い移植性が必要な場合は、十分ではありません。Joachim が言ったように、File クラスは OS とファイルシステムに大きく依存しています。Linux、Windowsでは動作が異なり、シンボリックリンク、ACL、大文字の名前などに遭遇すると動作が異なります。この動作をテストしたい場合は、実際には、アプリケーションではなくインフラストラクチャをテストする必要があります。したがって、単体テストの代わりに、多くの異なる環境 (おそらく仮想マシンを使用) での統合テストを考える必要があります。

于 2013-09-29T12:34:47.803 に答える