2017-08-30 15 views
0

VSの "SpecFlowTests"プロジェクトでいくつかのSpecFlowテストを実行しており、テストデータファイルが必要です。私は.testsettingsファイルを使ってファイルを展開していました。ただし、新しいMsTestエージェントは.testsettingsをサポートしていないため、ファイルを展開するための別のソリューションを見つける必要があります。VSTest - SpecFlowテスト用のテストデータファイルがTestResultsにデプロイされない

テストデータファイルには、 "Copy to Output Directory"が "Copy Always"に設定されています。これらは、出力ディレクトリにコピーされ、私は次のように出力ディレクトリを取得することにより、コードでそれらを参照することができます。

public static string AssemblyLocation() 
     { 
      var assembly = Assembly.GetExecutingAssembly(); 
      var codebase = new Uri(assembly.CodeBase); 
      var path = codebase.LocalPath; 
      return path; 
     } 

ローカルでテストを実行している場合、またはからのビルドの一部としてそれらを実行している場合は、このアプローチは動作しますTFS、それは次の場所にファイルを検索:TFSにおけるリリースの一部としてそれらを実行しようとすると

...\SpecFlowTests\bin\Debug\Helpers\TestDataFile.txt 

しかし、それはTestResultsディレクトリのうち、フォルダ内のテスト・データ・ファイルを探し、それを見つけることはできません。

C:\buildagent1\_work\r1\a\TestResults\Out\Helpers\TestDataFile.txt 

私は、その後のテストでBeforeFeature法にDeploymentItem属性を設定しようとしたが、それが動作しないように見える、それはTestResultsでアウトフォルダにテスト・データ・ファイルを展開する必要がありますが、それがありませんない。

私は3つの状況(テストをローカルで実行し、TFSビルドから実行し、TFSリリースから実行する)で動作する共通のソリューションが必要です。

私はこれで比較的新しいので、アドバイスをいただければ幸いです。

ありがとうございます!

+0

どのバージョンのTFSを使用しますか?どのようにあなたはリリースでそれらを実行しましたか?ビルド定義を成果物として設定するだけですか? TFS 2017では、ソース(リポジトリ)をリリースのアーティファクトソースとして直接設定し、それが機能するかどうかを確認することができます。 –

+0

TFS 2017.Yes、リリース定義には、アーティファクトソースとして2つのビルド定義があります。ビルド定義には、エージェントでSpecFlowテストを実行するタスクを含む環境が含まれています。ただし、テストの実行時には、データはC:\ buildagent1 \ _work \ r1 \ a \ TestResults \ Deploy_SerTFSBUILD 2017-09-04 20_01_06 \ Out \ Hekpers \ TestDataFile.txt'にありますが、そこには何も配置されていません。 "ファイルのコピー"タスクを追加しようとしましたテストを実行する前に "TestResults \ Deploy_SerTFSBUILD .."フォルダが作成されているため、ターゲットフォルダとして選択するものがわからない – cristina

+0

".testsettings"ファイルを使用できるときは、どのファイルを展開する必要があり、テストが実行されると、ファイルはこの "TestResults \ Deploy ... \ out"フォルダに自動的に展開されました。 – cristina

答えて

0

[DeploymentItem]属性はBeforeFeatureメソッドでは機能しません。彼らは実際のtestmethod/testclassを使う必要があります。

SpecFlow 2.2から、フィーチャーファイルにデプロイメント項目を指定して、正しい場所に生成された属性を取得することができます。あなたの機能に@MsTest:DeploymentItem:Helpers\TestDataFile.txtを入れてください。
テストスイートの例:https://github.com/techtalk/SpecFlow/blob/master/Tests/TechTalk.SpecFlow.Specs/Features/MsTestProvider.feature

+0

それは働いた!恐ろしい、ありがとう! – cristina

関連する問題