アセンブリが既に存在するアセンブリから単体テストを実行する必要があります。Visual Studio (2012) は、そのアセンブリを生成された展開場所にコピーし、そこからテストしています。どうすればそれを防ぐことができますか?
How to: Deploy Files for Testsのこのページによると、単体テストは、使用されている DeploymentItem 属性がある場合にのみ、一部のディレクトリに展開されます。
Visual Studio を使用してテストを実行する場合、配置フォルダーはソリューション フォルダーの TestResults の下に作成されます。テスト実行のテスト メソッドまたはクラスのいずれかに DeploymentItem 属性がある場合、または .testsettings ファイルを使用する場合は、別の配置フォルダーが使用されます。
DeploymentItem 属性はありませんが、ビルド出力ディレクトリではなく、生成されたディレクトリから単体テストが実行されているため、次のテストは失敗しています。また、.runsettings ファイルを作成して、[配置を有効にする] がオフになっていることを確認しようとしましたが、Visual Studio はそれを無視しているようです。
[TestClass]
public class UnitTests
{
private void RunAssemblySelfTests(string assemblyName)
{
Assembly assembly = Assembly.LoadFrom(assemblyName + ".dll");
//...load and run tests that use in-house testing framework
}
[TestMethod]
public void MyAssemblyTest()
{
RunAssemblySelfTests("MyAssembly");
}
}
UnitTests アセンブリのビルド出力ディレクトリは MyAssembly と同じディレクトリであり、両方が存在することを確認しました。実行すると、次の例外が原因でテストが失敗します。
結果メッセージ:
テスト メソッド MyNameSpace.UnitTests.MyAssemblyTest が例外をスローしました: System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした 'file:///[ソリューションへのパス]\SolutionName\TestResults[ユーザー名]_[コンピューター名] 2013-08- 28 13_35_10\Out\MyAssembly.dll' またはその依存関係の 1 つ。システムは、指定されたファイルを見つけることができません。
依存関係が数GBになるため、このリフレクションが行われなくても、テストアセンブリを展開できません。