4

ScalaTest を使用して Play Framework アプリの統合テストを行っています。これ: list-of-specification
org.scalatest.Suites(list-of-specifications)
内の各テストを実行します。しかし、各仕様が独立して実行されないようにするにはどうすればよいでしょうか? 彼らは2回処刑されています。

例:

import org.scalatest.{Suites, FreeSpec}

class BrowserSuiteSpec extends Suites(new AnonLoginSpec)
class AnonLoginSpec extends FreeSpec { ... }

myAnonLoginSpecは 2 回実行されます。最初は BrowserSuiteSpec の一部として実行され、次に独立して実行されます。これは FreeSpec クラスであるためです。(特性に変更AnonLoginSpecすると、コンパイル エラーが発生します。)

に名前AnonLoginSpecを変更しAnonLoginSpeXても効果はありませんでした — まだ 2 回実行されています。 (おそらく ScalaTest は "Spec" 接尾辞を探していたのではないかと思いましたが、Specs2 がそうしていると思います。)

ドキュメントには、この問題については言及されていません (私が知る限り)。

4

2 に答える 2

7

ScalaTest 2.0.M5 以降を使用している場合は、各スイートに@DoNotDiscoverでアノテーションを付けることができます。別の方法として、ScalaTest ランナーに -s MainSuite を渡すことで、ディスカバリーをバイパスしてメイン スイート クラス名を指定することもできます。

于 2012-12-29T15:27:47.127 に答える
2

2.0-M5 より前のバージョンを使用している場合は、仕様abstractを宣言するだけで、ScalaTest はそれを無視します。だから私はこれをしました:(そしてそれは動作します;テストはSuitesコンストラクト内からのみ実行されます)

class BrowserSuiteSpec extends Suites(new AnonLoginSpec {})

abstract class AnonLoginSpec extends FreeSpec { ... }

(とにかくmpilquistの答えを受け入れました(上記を参照)。これは、バージョン2.0での動作が想定されているためです。)

于 2012-12-29T16:02:55.957 に答える