0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Play Framework勉強めも テストについて

Last updated at Posted at 2018-03-24

(参考)勉強してる書籍
https://www.amazon.co.jp/Play-Framework-2%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Java%E3%81%A7%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%ABWeb%E9%96%8B%E7%99%BA-%E6%B4%A5%E8%80%B6%E4%B9%83/dp/4798133922/ref=cm_cr_srp_d_product_top?ie=UTF8

#テストについて
プレイフレームワークでは、JUnitと呼ばれる、テスト用のライブラリを使ったテストが標準で用意されている。
スクリーンショット 2018-03-20 20.41.41.png

・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で表示されている文字列と比較する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?