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 ナイトリー ビルドでコード カバレッジを有効にしたい。