2017-01-25 66 views
0

Visual Studioでいくつかのテストを自動化する作業を進めています。しかし、異なるテスト方法はお互いに依存しているので、常に順番に実行する必要があります。データ駆動型のテストメソッドを使用していない限り、これはあまり問題にはなりません。Visual Studio - Visual Studioでデータドリブンテストを順次実行する

は、ここで私が達成しようとしているものです:

[DataTestMethod] 
[Datarow("Row1")] 
[Datarow("Row2")] 
public void DoThisFirst(){ 
//test execution 
} 

[DataTestMethod] 
[Datarow("Row1")] 
[Datarow("Row2")] 
public void DoThisSecond(){ 
//test execution 
} 

私はテストは次の順序で実行したい:

  • DoThisFirst - 行1
  • DothisSecond - 行1
  • DoThisFirst - Row2
  • DoThis秒 - 行2

代わりに、最初のメソッドのすべての反復をお互いに実行し、次に2番目のメソッドのすべての反復を実行します。

私は既にこれらのメソッドが順序付けられたテストでは表示されないことに気付きました。代わりにプレイリストファイルを使用しています。しかし、メソッドが実行される順序以外のものを指定する方法はないようです。

アイデアはありますか?

答えて

1

あなたが望むものを達成する1つの方法は次のとおりです。

他の2つを呼び出す1つのデータ駆動テストメソッドがあります。データファイルに新しい列を追加して、実行するテストを指定します。データファイルの各行を複製し、2つのテスト仕様を各行に追加します。概要では、コードは次のようになります。

[TestMethod] 
public void TheTest() 
{ 
    switch (DataSource["TestToRun"]) 
    { 
     case "DoThisFirst" : DoThisFirst(); break; 
     case "DoThisSecond" : DoThisSecond(); break; 
     default: Assert.Fail("Unknown test."); break; 
    } 
} 

テストデータ、CSVは、あるかもしれないとして:データ行を複製

TestToRun,UserName,Password,Etc1,Etc2 
DoThisFirst,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1 
DoThisSecond,Row1User,Row1Passowrd,Row1Etc1,Row1Etc1 
DoThisFirst,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1 
DoThisSecond,Row2User,Row2Passowrd,Row2Etc1,Row2Etc1 

は迷惑ですが、TheTestはちょうど続くDoThisFirst()を呼び出すように変更された場合DoThisSecond()DoThisFirst()が失敗した場合、DoThisSecond()は呼び出されません。ただし、2つのテストをこの順序で実行する必要がある場合は、DoThisFirst()が失敗した場合はDoThisSecond()を実行することは賢明ではない可能性があります。

+0

私はこれを正確に使っていませんでしたが、あなたは確かに正しい道に私を入れました。私は、お互いに依存している複数のテストメソッドを持つ代わりに、1つのDataTestメソッドで多数の標準メソッドを呼び出し、リターンをアサートしました。これにより、同じコードを再利用する新しいテストケースを簡単に作成することさえできます。どうも! –

関連する問題