例えばPlay2アプリを作っていてテストを書きたい場合、例えばDBを使ったテストなど、アプリケーションのコンテキストに依存するテストを書く場合、fakeApplicationを起動しないといけません。 ですが、テストケースごとにfakeApp起動してたらテストが遅くなるので、例えばJUnitなら@BeforeClassや@AfterClassアノテーションを使ってそのテストファイルの最初と最後に一度だけ起動停止を行う、みたいにするとテストケースごとの起動停止がなくなってテストが早くなります。 今Play2(Scala)でアプリを書いているのですが、Scalaの場合何も考えなければSpecs2を使って書くことになるわけですが、Specs2で上記のことをやろうと思った場合どう書けばいいのかが分からなくてウンウン唸ってたのようやく解決できたのでその備忘録です。 結論から言うとstepというのを使
こんな感じのエラーになってググってここにたどり着いたでしょうか? [info] Resolving org.scalaz.stream#scalaz-stream_2.11;0.5a ... [warn] module not found: org.scalaz.stream#scalaz-stream_2.11;0.5a [warn] ==== local: tried [warn] /Users/k-sera/.ivy2/local/org.scalaz.stream/scalaz-stream_2.11/0.5a/ivys/ivy.xml [warn] ==== public: tried [warn] https://repo1.maven.org/maven2/org/scalaz/stream/scalaz-stream_2.11/0.5a/scalaz-stream_2.11
「テストクラス内のさらに特定のテスト名」については、まず以下の記事参照 specs2で特定のテストケースを名前指定で実行する方法 で、そのあるテストのクラスの、特定のテストケースの名前部分のtab補完を作りました。 sbtのtestOnlyでは、テストクラス名は補完されるけど、さらにその中のテスト名はtab補完されないので。 https://gist.github.com/xuwei-k/a25ab36bba83fce6b850 例として、とりあえず現状のmasterのplay2のコアのモジュールでやってみましたが、テスト名に空白含まれてると無理ですね・・・。specs2のexパラメータ自体が、正規表現で受け付けるらしい?ので Bind* とすると、Bindではじまるテストだけが実行されているのがわかるかと思いますが。 とりあえず作っただけで、まだ色々と改善の余地はあると思います。 今後、
もうすぐ、specs2がversion2というちょっとややこしい(?)メジャーversionになって出るらしいです。でました。 新機能いっぱいあって自分も把握できてないんですが、その中でも面白いDSLが新機能として入っていたので、それを簡単に紹介します。 英語読める人は、本人がblog書いてるのでこれ http://etorreborre.blogspot.jp/2013/05/the-latest-release-of-specs2-2.html 読みましょう、今回紹介するもの以外にも、網羅的に説明されてます まず、String InterpolationのDSLを説明するまえに、ちょっとspecs2の基本的な形式について説明します。 specs2にはimmutable*1とmutable*2という2つの形式があります。*3 公式のドキュメントからそのまま拝借しますが、 mutableは
specs2 には二種類の書き方がある http://etorreborre.github.com/specs2/guide/org.specs2.guide.QuickStart.html Unit specification 「org.specs2.mutable.Specification」です。specは実装コードと交互に記述されます。 単体のクラスについて記述するための利用が想定されています。 以下のような割とおなじみの書き方です。 class XXXSpec extends Specification { "xxx" should { "yyyy" in { // テストの内容 } } } Acceptance specification 今回の本題は「org.specs2.Specification」です。specが一つの文章のように記述され、実際のテストコードの実装は別のと
Scala で specs2 使いながら開発・テストしてるときに、特定のクラスのさらに特定のテストだけ実行したいときありませんか?僕はありました なので調べました とりあえず特定のクラスのみは以下 sbt>test-only hoge.FooTestね。簡単でしょう? 特定のテストだけがだるかった まずソースを見て欲しい with Tags というのと should のあとに section、in のあとに tag というメソッドを呼び出してるのがお分かりいただけるだろうか?このとき sbt>test-only SpecsStudyTest -- include worldと実行すれば"world"とタグ付されたテストが実行される 他にもいい方法あったら誰か教えてくだしあ! (特定のクラスはいいとして特定の部分まではやり過ぎ感あるw)
Specsではスペック毎、グループ毎、テストケース毎に事前処理、事後処理を実行することができます。 スペックの開始前、終了後に事前処理、事後処理を行う場合は以下のようにします。doSpecBeforeとdoSpecAfterはスペックの実行前と実行後に一度だけ実行されます。 class AddActionTestSpec extends Specification { // スペックの事前処理 doSpecBefore { ... } "execute()" should { "set result to request attribute" in { ... } } // スペックの事後処理 doSpecAfter { ... } } テストケース毎に事前処理、事後処理を行うには以下のようにします。グループ単位で指定できるのでJUnitのsetup()メソッドやtearDown()メソッ
http://twitter.github.com/scala_school/specs.html 以下は私の方でtypoや表示崩れを直したものです。 https://github.com/seratch/scala_school/blob/master/web/_posts/2011-05-09-lesson.textile 誤訳などありましたら、お手数ですが、ご指摘いただければ幸いです。 なお、現在はspecsよりもspecs2を使うことが推奨されています。 etorreborre/specs2 @ GitHub こちらもあわせてご覧ください。 Scalaのユニットテスト入門 - case class HatenaDiary(id: Symbol = ’seratch2) extends Specifcation それでは飛び込んでみましょう。 import org.specs._ o
『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0063 号 バックナンバー Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist Magazine 0059 号 Rubyist
リリース物件にJavaしか使えないプロジェクトでも、開発環境としてScalaを使うことで、Javaだけ使うよりも開発効率を上げることができると思います。 開発環境でもScala使っちゃダメとかいうプロジェクトの場合は、あきらめるか、「僕が作ったんです!」とか言って押し切ってみるのはどうでしょう?(責任は持てません) 念のため、手元の環境は以下の通りです。※開発環境とは別です。 Eclipse 3.8.2 *1 Scala-IDE 2.0.2 別のプロジェクトを作って参照 Eclipse上で、メインプロジェクトが"TheApp"という名前のJavaプロジェクトだとしたら、"TheApp+"という名前のScalaプロジェクトを作り、"TheApp+"ビルドパスのプロジェクト参照に"TheApp"を追加します。 "TheApp+"にScalaTestなりSpecs2なりを使って、好きなだけテスト
Play2 Scalaのデフォルトのテストの仕組みSpecs2。 etorreborre/specs2 @ GitHub specsからspecs2になって結構仕様が変ってて、specs2に移行するにはA++ [Eric Torreborre's Blog]: specs2 migration guideが参考になる。 各Spec実行時の事前処理、事後処理の仕組みも変ってるので、そこだけざっとまとめてみる。 doBefore、doAfterの変更点 事前処理、事後処理の実装方法は何通りかある。 specsのdoBeforeはspecs2では↓のように書ける。 import org.specs2.mutable.Specification import org.specs2.specification.Scope class SampleSpec extends Specification{
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く