現在、次のようなテストがあるとします。
[TestMethod]
[DeploymentItem("DataSource.csv")]
[DataSource(
Microsoft.VisualStudio.TestTools.DataSource.CSV,
"DataSource.csv",
"DataSource#csv",
DataAccessMethod.Sequential)]
public void TestSomething()
{
string data = TestContext.DataRow["ColumnHeader"].ToString();
/*
do something with the data
*/
}
このテストを実行すると、データ値と同じ数のテストが実行されます。
私がやりたいのは、データソースを保持しながら、この種の動作をコードで複製することです。例: Web サービスの複数のデプロイされたバージョンに対してこのテストを実行したいとしましょう (これは機能テストであるため、何もモックされていません。つまり、複数の Web サービスにデプロイされた Web サイトに対する Codeui テストである可能性が非常に高くなります)。ホスト)。
[TestMethod]
[DeploymentItem("DataSource.csv")]
[DataSource(
Microsoft.VisualStudio.TestTools.DataSource.CSV,
"DataSource.csv",
"DataSource#csv",
DataAccessMethod.Sequential)]
public void TestSomething()
{
var svc = helper.GetService(/* external file - NOT a datasource */);
string data = TestContext.DataRow["ColumnHeader"].ToString();
/*
do something with the data
*/
}
ここで、外部ファイルに 2 つの配置場所がリストされていて、testmethod のデータソースに 2 つの値がある場合、4 つのテストを取得する必要があります。
データソースに値を追加しない理由を尋ねているかもしれません。外部ファイルのデータは、テストの実行のために展開項目を介して取り込まれます。これ.testsettings
は、テストを実行する人ごとに異なる方法で定義することができ、また、テスト コードの再構築を強制したくないためです。テストを実行するか、テスト用のデータ ファイルの数を爆発させます。各テストでは、テスト対象の場所を指定できる場合があります (物理的な場所ではなく、コンパイル時に型が認識されます)。
同様に、展開場所は場所と量が動的になる可能性があるため、展開場所ごとにテストを作成することはできません。
この問題を解決するのに役立つ情報を誰か教えてもらえますか?