12

VS2012 と TFS2012 を使用しており、コードの単体テストを作成しています。コード カバレッジを報告したいと考えています。また、単体テストで .config ファイルを使用してテスト appsettings を行い、ロギング、MS Enterprise ライブラリ設定などのその他の設定も行いたいと考えています。


App.config が新しいテスト フレームワークで機能しない

MS の新しいテスト フレームワークは素晴らしいはずですが、私にとってはそれほど素晴らしいものではありません。新しいフレームワークが構成ファイルを使用しなくなった場合、構成ファイルに基本的な構成を設定するにはどうすればよいですか?

混合モードの dll に問題があり、修正が見つかりました。

<startup useLegacyV2RuntimeActivationPolicy="true"> 

app.config に。しかし、これは単体テスト プロジェクトでは機能しませんでした。構成ファイルがもう存在しないためです。インターネットで検索すると解決策が見つかりました

Visual Studio .Net 4.5 テスト プロジェクト内の .Net 2.0 混合モード アセンブリの問題

これは、プログラムファイルディレクトリにあるVisual Studio 11自体のファイルを編集することを意味し、私が思う素晴らしい解決策ではありません....

そして、いくつかの基本的なアプリ設定はどうですか? これをどのように設定すればよいですか?


.testSettings ファイルを使用しないでください

古いテスト フレームワークが使用されるため、古い .testsettings ファイルを使用することも MS では推奨されていません。また、.testsettings ファイルを使用すると、tfs2012 ビルド サービスでコード カバレッジをセットアップできません。

もう 1 つの問題は、dll (system.data.sqlite.dll) を必要とするコードがあることですが、実行時にのみ単体テスト コードがこの dll を必要とします。だから参考書はいらない。これは、testsettings ファイルの [展開] タブを使用して修正しました。ただし、新しいフレームワークでは、testsettings ファイルを使用しないでください。ファイルが必要な場合は、[deploymentitem] 属性があります。ただし、deploymentitem 属性は、[testinitialize] または [assemblyinitialize] メソッドではなく、[testmethod] でのみ使用できます。しかし、私たちのコードは [testinitialize] メソッドで dll を必要とします。したがって、dll を配置する方法はありません。

[assemblyinitialize] (または testinitialize) メソッドで File.Copy でコピーするだけでは機能しません。

dll をファイルとしてプロジェクトに追加し、「. runsettings ファイルを使用して単体テストを構成する」で説明されているように、「出力ディレクトリにコピー」を「常にコピー」に設定しても、まったく機能しません。

これに対する (あまり良くない) 解決策は、dll を参照として追加してから、クラスをインスタンス化して何もしないことです。そうしないとビルドされないため、dll は適切なディレクトリに展開されます。


私の問題を解決する方法??? - 単体テストで構成ファイルを使用したい。- 「assemblyinitialize」および/または「classinitialize」メソッドで必要ないくつかのファイルをデプロイしたい。- TFS2012 ナイトリー ビルドでコード カバレッジを有効にしたい。

4

1 に答える 1

2

a) App.config が新しいテスト フレームワークで機能しない

これはまだ機能するはずです。この場合に欠けていると思うのは、この .config ファイルがテスト dll と一緒にコピーされていないことです。これを展開アイテムに設定して、もう一度お試しいただけますか?

b) .testSettings ファイルを使用しないでください

  • .testsettings とコード カバレッジ。.testsettings ファイルを使用したコード カバレッジの設定は、VS 2012 ビルドでもサポートされています。mstest 2010 テスト ランナーを選択し、ビルド定義で .testsettings ファイルを指定するだけです。

.testsettings ファイルにコード カバレッジ設定以外のものがない場合は、簡単に 2012 テスト ランナーに移行し、ドロップダウン項目で [コード カバレッジを有効にする] を選択できます。

  • テスト初期化に必要なファイルのコピー .testsettings ファイルを介してこれを行うか、ビルド後のファイル コピー タスクを実行できます。そうすることは非常に簡単で、他のものには何の影響もありません。「出力ディレクトリへのコピー=常にコピー」を使用しても機能します。サンプル ソリューションで試してみて、セットアップでこれが機能しない理由を絞り込めるかどうかを確認してください。
于 2012-10-25T04:36:37.517 に答える