0

我正在尝试浏览本指南: 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
4

1 回答 1

0

根据教程的测试createAndRetrieveUser()应该在test/models/ModelsTest.java. 你把它放进去ApplicationTest.java

于 2013-11-13T14:11:34.890 回答