2010-12-14 29 views
1

ファイルを作成する単体テストの作成中です。MSTest:TestContextを使用した単体テストの作成

現在、私はTestContextTestResultsDirectoryを使用して、作成したファイル(アサートする結果)を保存しています。構文は次のようになります。

私の質問は基本的になぜTestResultsDirectoryが作成されていないのですか?

File.Createを呼び出すと、テストはDirectoryNotFoundExceptionで失敗します。

これはTestContextを使用する正しい方法ですか、などの属性があり、ランタイムが「テスト関連」パスを作成するようにメソッドレベルで設定できますか?

+0

ユニットテストは単独で実行され、データベース、システムクロック、ファイルシステムなどの外部リソースとは通信しないため、技術的には「ユニットテスト」は作成されません。 – Steven

+0

概念的にはい、あなたは正しいです。このテストでは、テキストファイルを更新し、テキストファイルが正しいことを確認します。監査の目的で、 "変更"がファイルに格納されていることを確認する必要があります。テストコンテキストは実行時に生成されるため、テストは任意の開発者(テストコンテキストを選択するためのキー)で実行できます。テストコンテキストが、存在しないディレクトリへのポインタを持っているのはなぜか、ちょっと混乱しています。 – msuhash

+0

作成したディレクトリはどこで検索しましたか? System.Console.WriteLine(Path.GetFullPath(Path.Combine(TestContext.TestResultsDirectory、 "Test.txt")))))を試しましたか? – k3b

答えて

1

私は決してTestContextを使用しません。この場合、私の代わりにEnvironment.CurrentDirectoryを使用します。

//Create directory 
    Directory.CreateDirectory(Path.Combine(Environment.CurrentDirectory, "SubDirectory")); 

    //Create file. 
    File.Create(Path.Combine(Environment.CurrentDirectory, "Test.txt")); 
+0

同じパターン(現在のディレクトリ)を使用し、ルートフォルダにフォルダを作成した今日、いくつかのテストケースをクリーニングしていました。私はVisual Studio 2010を使用しています。 – vboctor

1

はおそらく代わりにTestContext.ResultsDirectoryを使用します。これは、実際に作成されるディレクトリを指しているようです。

TestContext.TestResultsDirectory(パスにGUIDフォルダがあります)が作成されないため、DirectoryNotFoundExceptionが表示されます。

2

私はこれが古いスレッドだと知っていますが、今は自分でこのことについて学習しています。Visual Studioの自動テストで遊んでいる間に、TestResultsDirectoryフォルダに関する質問に答えられませんでした。他人を助けるかもしれない。

TestResultsDirectory

だけではないテスト中に、作成さです。 (@ Kevin、名前のGUIDを持つことは、フォルダが作成できるかどうかとは関係ありませんが、それがあなたが暗示していたものです)。テストの実行中にファイルとフォルダの作成をフォローしました。ユーザーコードがを終了した後に まで作成されません。

作成された画面の映像がキャプチャされるテスト(ScreenCapture.wmv)またはアクションログ(UITestActionLog.html)を実行している、それはあなたのコードが終了した後までではない
を、作成された後のファイルは TestResultsDirectory に配置されている結果。テストでこれらのファイルまたは類似の結果ファイルが作成されない場合、このフォルダはほとんど作成されません。

私が言ったように、私はまだVisual Studioのテストについて学んでいます。

更新:ビデオやアクションログを記録するとき、テストが終了するまでのメモリにが格納されているようです。これは、ユーザーコードが終了した後に出力フォルダが作成される理由と思われます。

このトピックについてさらに詳しく知りたいのであれば(複数回回答を編集できますか?)、この回答を更新します。

関連する問題