一人情シスのつぶやき

名古屋の中小企業で一人情シスをしている作者が、日々の業務で思うことをつぶやきます。

テスト対象プロジェクトのコンテンツファイルが必要なテスト実行時の注意

要約

テスト対象プロジェクトのコンテンツファイルが存在することが必要となるテストを行う場合は、テストクラスに[DeploymentItem(@"Files\contents.xlsx", "Files")]の記述が必要

内容

Targetプロジェクトにて、Files\contents.xlsxをコンテンツ指定しており、これを利用する機能をTargetTestプロジェクトから実行する場合、何も考えずに実行するとFiles\contents.xlsxが見つからない旨のエラー(File or Directory Not found)が出る。

で、そのあとにテスト単体を個別に実行するとうまくいく。[選択して実行]と[すべてを実行]では実行パスが違い、前者では何も指定しなくてもコンテンツもコピーされるが、後者ではされないためのようだ。

blog.livedoor.jp

対応としては、TestClassのアノテーションの下にDeploymentItemのアノテーションを追加するとうまくいった。

[TestClass]
[DeploymentItem(@"Files\contents.xlsx", "Files")]`
public class TestClass{
...

ディレクトリ「Files」も指定しないとDirectoryNotFoundExceptionとなった。コンテンツファイルをテストプロジェクトにコピーする必要はない。