http://www.playframework.com/documentation/2.2.x/JavaGuide2のガイドを一通り調べようとして
いますが、いくつかの説明が欠けているため、迷ってしまいます。もっと正確に言うと:a)「ユーザークラスから始める」段落の最後で、エラーが発生するはずでした。私はしませんでした。「どうでもいい」と思って先に進みましたが、今思えば間違いだったのかもしれません。b) 「最初のテスト」に進みましたが、テストをどこに置くべきかが書かれていませんでした。それで、ApplicationTest.java に入れました。ただし、ebeanが定義されていないと言って、テストに失敗しました。それで、少しグーグルした後ebean.default="models.*"
、application.confに追加しようとしました。うまくいきましたが、今は
[error] Test ApplicationTest.createAndRetrieveUser failed:
javax.persistence.PersistenceException:
java.sql.SQLException: Attempting to obtain a connection from a pool
that has already been shutdown.
何が悪いのかわかりません。
私のアプリケーションテスト
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.JsonNode;
import models.User;
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.*;
import static org.junit.Assert.*;
import play.libs.*;
import com.avaje.ebean.Ebean;
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.");
}
@Test
public void createAndRetrieveUser() {
new User("bob@gmail.com", "Bob", "secret").save();
User bob = User.find.where().eq("email", "bob@gmail.com").findUnique();
assertNotNull(bob);
assertEquals("Bob", bob.name);
}
}
ユーザークラス
package models;
import javax.persistence.*;
import play.db.ebean.*;
import com.avaje.ebean.*;
@Entity
public class User extends Model {
@Id
public String email;
public String name;
public String password;
public User(String email, String name, String password) {
this.email = email;
this.name = name;
this.password = password;
}
public static Finder<String,User> find = new Finder<String,User>(
String.class, User.class
);
}
アプリケーション.conf
#tried with 'db.*' uncommented as well as with commented
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
db.default.user=sa
db.default.password=""
db.default.jndiName=DefaultDS
# end of 'db.*'
ebean.default="models.*"
# Root logger:
logger.root=ERROR
# Logger used by the framework:
logger.play=INFO
# Logger provided to your application:
logger.application=DEBUG