#テストについて
プレイフレームワークでは、JUnitと呼ばれる、テスト用のライブラリを使ったテストが標準で用意されている。
・ApplicationTest.java
→アプリケーションの挙動に関するテストを行うもの
・IntegrationTest.java
→いくつもの、細かいテスト統合的に行うもの
#ApplicationTest.javaのコード
import com.fasterxml.jackson.databind.JsonNode;
import org.junit.*;
import play.mvc.*;
import play.test.*;
import play.data.DynamicForm;
import play.data.validation.ValidationError;
import play.data.validation.Constraints.RequiredValidator;
import play.i18n.Lang;
import play.libs.F;
import play.libs.F.*;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
/**
*
* Simple (JUnit) tests that can call all parts of a play app.
* If you are interested in mocking a whole application, see the wiki for more details.
*
*/
public class ApplicationTest {
@Test
public void simpleCheck() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
@Test
public void renderTemplate() {
Content html = views.html.index.render("Your new application is ready.");
assertThat(contentType(html)).isEqualTo("text/html");
assertThat(contentAsString(html)).contains("Your new application is ready.");
}
}
##最低限必要なパッケージ
インポートしているパッケージは複数あるが、最低限必要なパッケージは以下。
import org.junit.*;
import play.mvc.*;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
##中身について
###simpleCheckメソッド
コードでは1+1が2であることを確認しているが、それが目的じゃ無くて、**ここにメソッドを定義して、assertThatを使って値をチェックすればいいよ!**って意味。
assertThat(a).isEqualTo(2)に関しての動作は以下記事参照。
(参考)https://qiita.com/naotawool/items/6512ecbe2fd006dacfd2
@Test
public void simpleCheck() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
###simpleCheckメソッド
レンダリングされた値のチェックをしている。
@Test
public void renderTemplate() {
Content html = views.html.index.render("Your new application is ready.");//①
assertThat(contentType(html)).isEqualTo("text/html");//②
assertThat(contentAsString(html)).contains("Your new application is ready.");//③
}
・contentType
→コンテンツタイプをStringで返す
・contentAsString
→Contentからコンテンツのテキストを取り出し、Stringで返す
・isEqualTo("text/html")
→text/htmlかどうかチェックする。text/htmlとは
(参考)http://wa3.i-3-i.info/word15789.html
処理の流れは、
①レンダリング
↓
②テキストタイプがhtmlかチェック
↓
③中身をチェック
#IntegrationTest.javaのコード
import org.junit.*;
import play.mvc.*;
import play.test.*;
import play.libs.F.*;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
import static org.fluentlenium.core.filter.FilterConstructor.*;
public class IntegrationTest {
/**
* add your integration test here
* in this example we just check if the welcome page is being shown
*/
@Test
public void test() {
running(testServer(3333, fakeApplication(inMemoryDatabase())), HTMLUNIT, new Callback<TestBrowser>() {
public void invoke(TestBrowser browser) {
browser.goTo("http://localhost:3333");//①
assertThat(browser.pageSource()).contains("Your new application is ready.");//②
}
});
}
}
##中身について
testメソッドの中の、invokeというメソッドの中に、テストの処理を書く!
実行している文は以下
running(testServer(・・・),HTMLUNIT,new Callback(){・・・})
runningメソッドの引数は
・TestServerインスタンス
・WebDriverの指定
・実行後の処理をする、コールバック用のCallbackインスタンス
ここは一旦こういうものだとして、理解する。
public void invoke(TestBrower browser){}
①goToメソッドで引数のURLにアクセスする
②browser.pageSource()でページのソースを取得する。これにより、TestBrowser browser
で表示されている文字列と比較する