2009-06-23 11 views
3

私は多くのtxt、データ、htmlなどのファイルを必要とする単体テストをたくさん持っています。これらのファイルを外部に保存することで、テストケースを更新する作業が非常に簡単になります。単体テストで外部データを使用するには?

単体テストに依存すると、異なるシステムやさまざまなテストランナーで多くの頭痛が発生します。

ベストプラクティスは何ですか?

  1. 外部比較的 コードでこれらのファイルをリンク彼らと を保存しますか? (は、いくつかの テストランナーで問題を引き起こし、または余分 設定が必要です)
  2. ユニットテストのDLL内のすべてのこれらのファイルを埋め込み、そこから、ハードコードで保存 (作成テストが難しくなります)
  3. を読みます
場所(あなたが別の場所でコード をチェックアウトする際 は明らかに非常に多くの の問題を引き起こします)

この問題をどうやって解決しますか?

+0

オプションに番号を付けてください。弾丸は混乱しています。あなたのテストランナーには何の問題がありますか?また、「余分な」構成について話していますか?なぜオプション1が悪いのですか?特定の問題を提出できますか? –

+0

nUnitでは時々動作しません。バージョンや設定を分離することはできません。しかし、主な問題は、 "作業ディレクトリ"が時々変更され、相対ファイルがそれ以上見つからない場合です。 –

答えて

3

私は私のテストプロジェクトにローカルフォルダを使用するなど、コードとテストファイルを取得:

public static FileInfo GetTestFileInfo(string fileName) 
{ 
    var dir = AppDomain.CurrentDomain.BaseDirectory; 
    return new FileInfo(dir + @"\..\..\TestData\" + fileName); 
} 

をああ、私はMbUnitのを使用しています。

+0

AFAIK MBUnitは作業ディレクトリオプションをサポートしています。私は "TestData \ xxx.txt"を付けておくと気がついたが、nUnitは厄介なことをやっていると思う。少なくとも今のところは。私は現在のディレクトリを取得しようとしていた。 –

0

私の練習は、ユニットテストアセンブリにテストリソースを埋め込み、GetManifestResourceStreamを使ってそれらを引き出すことでした。

NUnitテストは、とにかくfixture指向です。したがって、フィクスチャー(、つまり、特定のリソースセット)を設定したら、追加のテストを追加するのは簡単です。

関連する問題