2016-09-12 5 views
0

コードをテストしてプログラマにフィードバックを提供するための自動テストがいくつか書かれています。コードが指定された入力ファイルを読み取ったかどうかを検出

要件の1つは、コードが指定された入力ファイルを正常に読み取ったかどうかを検出することです。そうでなければ、ユーザーにフィードバックを提供する必要があります。これを検出する方法の1つはatimeタイムスタンプでしたが、当社のサーバードライブはrelatimeオプションでマウントされているため、読み取られるファイルごとにatimeのアップデートは取得されません。すべてのatimeを記録するようにこのオプションを変更すると、I/O操作が大幅に遅くなるため実行できません。

特定のコードが実際に指定された入力ファイルを読み取るかどうかを検出するために使用できる他の方法はありますか?

+1

完全な 'atime'サポートがあっても、ファイル全体を読み取ってその一部だけを読み取るコードをどのように区別しますか?あなたは本当にそれを確認する必要がありますか?たぶん代わりにコード出力を確認します(ファイルを読み込んで処理した場合に一致します)。 –

+0

私はSergioに同意します:ファイルをタッチしても、正常に読み込まれたわけではありません。あなたが本当に "確信している"ことを望むならば。それらのプログラムはある種の表示を「送る」必要があります。 – GhostCat

+0

@SergioTulentsev - 入力を処理した後にのみ生成される出力をチェックしていますが、プログラマが正しくファイルを読み込んでいるかどうかを検出する必要があります(部分的には出力を作成するのには役に立ちませんのでここで説明します) 。多くの場合、パスでエラーが発生していることが分かりました( 'C:':Pに責任を負う)、それを検出して関連するフィードバックを提供したいと考えています。 – Manish

答えて

0

私はSergioに同意します:ファイルをタッチしても、正常に読み込まれたというわけではありません。あなたが本当に "確信している"ことを望むならば。それらのプログラムはある種の表示を「送る」必要があります。もちろん、それを得るための多くの選択肢があります。

実際には、テスト対象のプログラムがログファイルを作成すると仮定します。あなたの "テストモニタ"は、ログファイルに "xyz PASSEDを読む"などの固定エントリがあるかどうかをチェックできます。

"テスト対象のコード"でログファイルが作成されない場合、多分:それを変更することを検討してください。

+0

おそらく、システムコールなどを傍受する可能性があります。実際にプログラムがファイルを開いて読み込んだことを確認する。要件は分かりませんが、これはトータルオーバーキルのようです。 :) –

+0

それは依存します:もしログファイルが既に存在しているのであれば – GhostCat

1

ここには野生的なアイデアがあります。考えられるアプローチの1つは、多かれ少なかれ次のようになります。

  1. このプログラムでは、すべての読みが抽象化されています。たとえば、File.read(filename)(stdlib)ではなく、MyFileUtils.read(filename)(カスタム)です。
  2. 通常の操作では、MyFileUtilsは作業をFile(または使用しているシステムの組み込みライブラリ/呼び出し)に委譲します。
  3. しかし、テスト中に、MyFileUtilsは、委任と共に、フレームワークに使用状況を報告する特別なテストバージョンに置き換えられています。

一部の環境/言語では、コードを直接Fileに注入することが可能であり、抽象化は必要ないことに注意してください。

関連する問題