ブラウザのテストを自動化
テストを自動化できると色々と利点がありますね。
リグレッションテストが簡単にできます。それによりプログラムの改修も気軽に行えます。
もしテストコードが無く、毎回手動でテストを実施しているとどうなるか?
改修のたびにテストに時間を取られ、テストが面倒くさくなってきます。
そのうちテストが不十分な状態でリリースしてしまいます。
プログラムを改修すると、予想外の箇所に影響を与えていることがあります。
テストが不十分ですと、それらが漏れた状態でリリースしてしまい、本番環境でエラーが・・・
それを防ぐためにもテストコードは必要です。
今回はテストの中でもブラウザのテストをPlay frameworkで行います。
Play frameworkでは既にテスト用APIが準備されているので簡単です。
/test/controller/WebTestSpec.scala
package controllers
import org.specs2.mutable._
import play.api.test._
import play.api.test.Helpers._
class WebTestSpec extends Specification {
"Application" should {
"work from within a browser" in {
running(TestServer(3333), HTMLUNIT) {
browser =>
browser.goTo("http://localhost:3333/submit/index")
// Get the text in tag
browser.$("title").getTexts().get(0) must equalTo("Multiple submit buttons")
// Move next page
browser.$("button[name='button1']").click
browser.$(".alert-message strong").getTexts().get(0) must contain("Clicked the button 1")
}
}
}
}
以上です。
あとはコンソールでテストを実行していきます。
コンソール
play-sample> play [play-sample] $ test →全テストを実施 [play-sample] $ test-only controllers.WebTestSpec →WebTestSpecのみテスト
Sampleソース
GitHub patolie/play-sampleにソースコードをあげています。