2016-09-26 14 views
2

ローカルマシンで作業しているテスト(MS TESTで実行中)の一環として、バッチファイルをプログラムでC#で実行したいと思っています。実行したいバッチファイルは、ソースコードを含むサポートフォルダ内のリポジトリにあります。 VSTSでのテストはこのように実行されていますVSTSのファイルへのパス

"C:\プログラムファイル(x86の)\のMicrosoft Visual Studioの14.0 \ Common7 \ IDE \ CommonExtensions \マイクロソフト\ TestWindowの\ vstest.console.exe"「C:\ International \ InternationalAppAutomation \ International.IntegrationTests.UI \ International.IntegrationTests.UI \ bin \ Debug \ International.IntegrationTests.UI.dll "" C:\ International \ InternationalAppAutomation \ International.IntegrationTests.UI \ International.IntegrationTests.UI \ obj \ Debug/International.IntegrationTests.UI.dll "/ TestCaseFilter:" TestCategory = Explore "/Settings:"C:\International\InternationalAppAutomation\International.IntegrationTests.UI\International.IntegrationTests.UI\QA.testsettings"/logger:trx/TestAdapterPath: "C:\ International \ InternationalAppAutomation"

と、VSTSがローカルマシンとは異なる場所から実行されるため、バッチファイルを実行するために相対パスを使用しているため、VSTSは失敗します。この問題の推奨される解決策は何ですか?

注 - このバッチファイルは非常に大きく、新しいテスト実行ごとにコピーしたくないため、このバッチファイルをテスト出力フォルダに入れることはできません。

+0

おかげ

テストクラスに適切なTestContextプロパティを追加することで、あなたからこれらのディレクトリを取得することができます。しかし、問題はバッチファイルにパスを渡すのではなく、バッチファイルへのパスを取得することです。 VSTSはバッチファイルがリポジトリ内にあるのでバッチファイルがどこにあるかを知っておく必要がありますが、VSTSはサーバー上でテストファイルを異なる方法で実行します。 – gmoerkerken

答えて

0

テスト実行時に使用する場合は、テストクラスまたはメソッドの属性を使用してisを[DeploymentItem]に設定する必要があります。これにより、テスト実行ディレクトリに確実に配置されます。

これはオプションではない場合は、環境変数を使用してソース管理ルートを検索します。ビルドエージェントは自動的に変数%BUILD_SOURCESDIRECTORY%を設定します。あなたまたはあなたのバッチファイルは、その場所を見つけるためにそれを使用できるはずです。または、VSTS variables taskを使用して、特定の変数をファイルのパスに設定します。各変数は後続のタスクで環境変数として使用できるようになります。既存の変数を使用して、ファイルへのパスを解決することができます。

XAMLビルドを使用している場合は、同様の変数を%TF_BUILD_SOURCESDIRECTORY%に設定できます。

参照:ファイルを解決する方法に応じて

、あなたは、あなたのバッチファイル現在のテスト出力ディレクトリまたは作業ディレクトリに指示する必要があるかもしれません。これらは、C#側から簡単に取得され、バッチファイルを実行するときに、環境に格納するか、パラメータとして渡すことができます。

TestContext.DeploymentDirectory 
TestContext.TestResultsDirectory 

参照:@jessehouwing

関連する問題