すべてのScalatestテストの前または後に何かをしている
質問
RESTful API の異なるエンドポイントをテストする scalatest のテストスイートを持っています。 私は本当に最高の構成のために異なるファイルにそれらを分離したい。
私の問題は、すべてのテストの前に何か(私の場合はHTTPサーバーですが、それが何であるかは重要ではありません)を開始し、すべてのテストが終了した後にそれをシャットダウンする方法です。
私はBeforeAndAfterAllについて知っていますが、それは1つのテストファイル内でbefore/afterを達成するのみです。 私はそのようなものを必要としますが、たとえば、すべてのテストについてです。
-- テストの前にhttpサーバーを開始する
-- すべてのテストスイートを実行する
-- httpサーバーのシャットダウン
どのように解決するのですか?
意図した方法は、ネストされたスイートを使用することです。Suite には IndexedSeq[Suite] を返す nestedSuites メソッドがあります (2.0 では、1.9.1 では List[Suite] だった)。また、SuiteにはrunNestedSuitesメソッドがあり、ネストされたスイートを実行する役割を担っています。デフォルトでは、runNestedSuites は nestedSuites を呼び出し、返された各スイートに対して run を直接呼び出すか、または Distributor が渡された場合は、並行して実行できるように入れ子スイートを Distributor 内に配置します。
ですから、おそらく本当にやりたいことは、FooとBarをクラスにして、EndpointTestsのnestedSuitesメソッドからそれらのインスタンスを返すことです。それを簡単にするためにSuitesというクラスがあります。以下はその使用例です。
import org.scalatest._
import matchers.MustMatchers
class Foo extends FunSpec with MustMatchers {
describe("Message here...") {
it("Must do something") { }
it("Must be ok") { }
}
}
class Bar extends FunSpec with MustMatchers {
describe("Hello you...") {
it("One more!") { }
}
}
class EndpointTests extends Suites(new Foo, new Bar) with BeforeAndAfterAll {
override def beforeAll(configMap: Map[String, Any]) {
println("Before!") // start up your web server or whatever
}
override def afterAll(configMap: Map[String, Any]) {
println("After!") // shut down the web server
}
}
しかし、潜在的な問題として、実行するSuitesを見つけるためにディスカバリーを使用している場合、EndpointTests、Foo、Barの3つ全てが発見されてしまうということがあります。ScalaTest 2.0では、FooとBarに@DoNotDiscoverのアノテーションを付けると、ScalaTestのRunnerはそれらを検出しない。しかし、sbtは発見する。現在、DoNotDiscoverでアノテーションされたSuiteを発見できるようにsbtを改良しているが、これはまだリリースされていないsbt 0.13で行う予定だ。その間に、FooとBarに未使用のコンストラクタ・パラメータを追加することで、sbtにそれらを無視させることができます。
関連
-
[解決済み] IntelliJ IDEAで依存関係が変更された後、build.sbtから強制的に再ロードするには?
-
[解決済み] ジッパーがコモナドである理由を理解する
-
[解決済み] sbtの依存関係ツリーを見るには?
-
[解決済み] Scalaでサブアレイを取得する正しい方法は何ですか?
-
[解決済み] SBTのrunアクションでアプリケーションを実行するために、JVMの最大ヒープサイズを"-Xmx "で指定する方法は?
-
[解決済み] 同じ要素をn回含むリストを作るには?
-
[解決済み] 依存性注入のためのリーダーモナド:複数の依存性、ネストされた呼び出し
-
[解決済み] Scala。文字列からブール値へのエレガントな変換
-
[解決済み] マルチプロジェクトにおけるSBTのテスト依存性。依存するプロジェクトでテストコードを利用できるようにする
-
[解決済み] scalaで空リストを宣言し、文字列を追加するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 述語で配列を2つに分割するには?
-
[解決済み] Scalaでmapを使用してインデックスを受け取るにはどうしたらいいですか?
-
[解決済み] Scalaの慣用表現「flatmap that s*** 」はどこから来たのか?
-
[解決済み] Scalaでマップを反転させるエレガントな方法
-
[解決済み] なぜ `private val` と `private final val` は違うのですか?
-
[解決済み] Abstract ClassとTraitの違い[重複]について
-
[解決済み] Scalaのコレクションにenrich-my-libraryパターンを適用するにはどうしたらいいですか?
-
[解決済み] scalaのslickメソッド、今ひとつ理解できない。
-
[解決済み] Scalaのメソッド宣言で等号を使用するのはいつですか?
-
[解決済み] Intellijのコンパイルに失敗する。"すでに次のように定義されています"