12

TestNgとJavaでは、DataProviderを使用して複数のテストケースを実行できます。これは個別のテストとして実行されます。つまり、失敗してもテストの実行は停止されません。ScalaTestまたはSpecs/Specs2の類似物はありますか?

4

3 に答える 3

25

ScalaTest と specs2 の両方で、実行時にテスト ケースを作成して、データでパラメータ化するのは簡単です。specs2 の例を次に示します。

   class BasketSpecification extends Specification {

     "a basket must contain fruits" >> {
       Seq(apple, banana, orange) foreach { fruit => 
         ("it contains: " + fruit) >> {
           basket must contain(fruit)
         }
       }
     }
   }

出力は次のとおりです。

 A basket must contain fruits
 + it contains: apple
 + it contains: banana
 + it contains: orange

一方、次の仕様:

   class BasketSpecification extends Specification {

     "a basket must contain fruits" >> {
       Seq(apple, cake, orange) foreach { fruit => 
         ("it contains: " + fruit) >> {
           basket must contain(fruit)
         }
       }
     }
   }

次のようなものが出力されます。

 A basket must contain fruits
 + it contains: apple
 x it contains: cake
   'basket' does not contain 'cake'
 + it contains: orange
于 2011-07-24T08:28:34.867 に答える
12

同じテストコードが複数のフィクスチャによって「共有」されているため、この概念はScalaTestでは「共有テスト」と呼ばれます。「フィクスチャ」はTestNGのDataProviderアプローチの「データ」です。テストを関数として表現するScalaTestのスタイル特性ごとにこれを行う方法があります。WordSpecの例を次に示します。

http://www.scalatest.org/scaladoc-1.6.1/#org.scalatest.WordSpec@SharedTests

または、forループを使用して、異なるデータポイントに同じテストコードを登録することもできます。これは、ここにある電子メールディスカッションで出てきました:

http://groups.google.com/group/scalatest-users/browse_thread/thread/7337628407b48064#

その場合のforループコードは次のようになります。

  for (browser <- List("IE", "Chrome", "Firefox")) { 
    test(browser + ": test one") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test two") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test three") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test four") { driver => 
      info("Testing using " + driver) 
    } 
    test(browser + ": test five") { driver => 
      info("Testing using " + driver) 
    } 
  } 
} 

これにより、実際には15のテストが登録され、ブラウザードライバーごとに5つのテストが登録されます。これがあなたが求めているものだと私は信じています。

于 2011-07-24T18:53:11.117 に答える