0

これが私の単体テストコードです:

[TestMethod]
public void GetMyAttachmentTest()
{
    var files = Directory.GetFiles(
        Directory.GetCurrentDirectory() + "/Common/MyFiles/", "*.*");

     .... do some thing with the files...
}

TFS ビルド マシンで単体テストを実行すると、次のエラーが発生します。

System.IO.DirectoryNotFoundException: パスの一部が見つかりませんでした
「C:\Builds\4\30 マイ フォルダー v1.0\myfolder1\TestResults\SCMTFSService_MyBuildServer 2013-01-16 18_06_52_Any CPU_Release\Out\Common\MySpecialFiles\」.

TFS のドロップ フォルダーを調べると、ファイルが次のフォルダーに展開されていることがわかります。

\\MyBuildServer\Builds\MyFolder\MySolution_20130116.5\Common\MySpecialFiles

単体テスト コード内では、次のようにファイルを取得します。

var files = Directory.GetFiles(
    Directory.GetCurrentDirectory() + "/Common/MySpecialFiles/", "*.*");

単体テストを TFS ビルド マシンで実行するときに、デプロイされたファイルを調べる方法はありますCommon\MySpecialFilesか?

4

2 に答える 2

1

質問は少しあいまいです。以前、一時的な場所で単体テストを実行する際に問題が発生しました。これは、 などの動的パスで問題になる可能性がありますGetCurrentDirectory()。一時ディレクトリが変更/消去されると、ファイルが「失われる」可能性があります。

動的パスを使用する代わりに、適切なアクセス許可を持つネットワーク共有をセットアップします。コードをプッシュせずに更新できるように、このネットワーク共有へのパスを構成ファイルまたは DB に保存することをお勧めします。

于 2013-01-17T20:08:26.930 に答える
0

ファイルの場所を app.config/web.config ファイルの appSettings 項目に入れてみませんか? これにより、ローカル、ビルド サーバー、または展開された環境のいずれであっても、環境に合わせて簡単に変更できます。

そうしないと、テストを実行する前に現在のディレクトリを \MyBuildServer\Builds\MyFolder\MySolution_20130116.5に設定する必要があり、おそらく他の方法でテストに影響を与えるでしょう。

于 2013-01-17T20:06:35.233 に答える