2016-12-15 15 views
0

specs2では、特定のテストスイートを満たす必要のある実装のリストが与えられています。現在の環境では使用できない実装をスキップするにはどうすればよいですか?その実装に対してテストがスキップされたことをユーザーに知らせるメッセージを表示しますか?specs2を使用して実装をスキップする方法

私はあなたのためでしょうに実装が利用できない

case class ImplToTest(name: String, impl: Option[Impl]) 

val toTest: List[ImplToTest] = ... 
val testSuite: Impl => Fragment = ... 

toTest.foreach { underTest => 
    s"${underTest.name}" >> underTest.map(testSuite).getOrElse(org.specs2.specification.create.DefaultFragmentFactory.text("This implementation is being skipped")) 
} 

答えて

1

その仕事のようなものを、これを試してみましたが、メッセージは表示されませんか?

class TestSpec extends org.specs2.mutable.Specification { 

    val implementations = List("now", "never", "always") 

    implementations.foreach { implementation => 
    if (implementation == "never") 
     s"$implementation" >> skipped("NOT NOW") 
    else 
     s"$implementation" >> { 
     "do this" >> ok 
     "do that" >> ok 
     } 
    br 

    } 
} 
+0

はい、ありがとうございます。実装はそれほどかわいらしく、副作用が多いですが。これは私が行った変更です:https://github.com/jedesah/Quasar/commit/1713d07749d38024553c7e7cdd58adc027545f2b。関数 'Unit'の戻り値型を持たずに同じことを達成する方法はありますか? – jedesah

+0

'fss.toList.foreach'を' Fragments.foreach(fss) 'に置き換えた場合、' Unit'の代わりに 'Fragments'を返さないのですか? – Eric

+0

これを行うと、タイプが整列していないように見えます。おそらく私のFragments APIに関する私の不慣れは間違いです。私は、上記のスイッチをコンパイルエラーが発生し、 'Fragments'と期待していますが、69行目に' org.specs2.execute.Skipped'が見つかりました。 – jedesah

関連する問題