§アプリケーションのテスト
テストのソースファイルは test
フォルダに配置します。 Play コンソールで test
(すべてのテストを実行) や test-only
(ひとつのテストクラスを実行: test-only my.namespace.MySpec
) タスクを実行すると、テストを実行することができます。
§JUnit を使う
Play アプリケーションのテストは、デフォルトで JUnit を使います。
package test;
import org.junit.*;
import play.mvc.*;
import play.test.*;
import play.libs.F.*;
import static play.test.Helpers.*;
import static org.fest.assertions.Assertions.*;
public class SimpleTest {
@Test
public void simpleCheck() {
int a = 1 + 1;
assertThat(a).isEqualTo(2);
}
}
注意:
test
またはtest-only
を実行するたびに、新しいプロセスがフォークされます。この新しいプロセスは JVM のデフォルト設定を使います。Build.scala
のplay.Project.settings
にカスタム設定を追加することができます。 例えば、以下のようにします:javaOptions in (Test) += "-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9998", javaOptions in (Test) += "-Xms512M", javaOptions in (Test) += "-Xmx1536M", javaOptions in (Test) += "-Xss1M", javaOptions in (Test) += "-XX:MaxPermSize=384M"
§フェイクアプリケーション上で実行する
起動中のアプリケーションの依存するコードをテストする場合は、簡単に FakeApplication
を利用することができます。
@Test
public void findById() {
running(fakeApplication(), new Runnable() {
public void run() {
Computer macintosh = Computer.find.byId(21l);
assertThat(macintosh.name).isEqualTo("Macintosh");
assertThat(formatted(macintosh.introduced)).isEqualTo("1984-01-24");
}
});
}
このフェイクアプリケーションに対して設定値を追加 (または上書き) したり、プラグインをモックすることも可能です。例えば、 default
という名前の インメモリデータベースに接続された FakeApplication
を起動する場合は、次のように書きます。
fakeApplication(inMemoryDatabase())
注意: Ebean ORM を使うアプリケーションは、Play が自動生成する getter/setter に依存するコードで書かれているかもしれません。Play はフィールドアクセスについても、この生成された getter/setter を使うように書き換えます。Ebean のダーティチェックは、この setter の呼び出しに依存します。JUnit テストにおいてもこの組み合わせを使用するよう、
Build.scala
のplay.Project.settings
に以下を追加することで、Play のフィールドアクセス書き換えを有効にする必要があります:compile in Test <<= PostCompile(Test)
次ページ: 機能テスト