3

我正在努力运行我的第一个游戏!2.1.x 应用程序,我总是收到此错误(这是来自运行test案例):

测试models.TestModel.testCreate失败:没有定义默认的EbeanServer?这通常通过 ebean.datasource.default 属性设置。否则它应该通过 registerServer() 以编程方式注册

我已经阅读了官方手册,许多 SO 问题,甚至一些博客,但我仍然无法弄清楚为什么我会继续这样做。

注意:我从这个 SO questiontest.conf中指定文件,在.Build.scala

以下是 的内容test.conf

include "application.conf"

application.version=${application.major}.${application.minor}.${application.revision}-TEST

db.default.driver=org.h2.Driver
db.default.jndiName=DefaultDS
db.default.url="jdbc:h2:mem:play;MODE=PostgreSQL;DB_CLOSE_DELAY=-1"
db.default.user=sa
db.default.password=""

ebean.default="models.*"
ebean.datasource.factory=jndi
ebean.datasource.default=DefaultDS

注意:在 中也指定了相同的键application.conf,但使用“prod”值。

我错过了什么?谢谢!

** 编辑 **

测试用例非常简单。我正在使用一个基类,从这个博客中按原样复制粘贴:

public class TestSomeModel extends BaseModelTest {
    @Test
    public void myModelCreate() {
        SomeModel model = new SomeModel();
        model.someStringAttribute = "some value";
    
        assertThat(model.id).isNull();
    
        model.save();  // <--- this is the line that gives the error
        
        assertThat(model.id).isPositive();
    }
}

......如果有人坚持要去看模特课......

@Entity
public class SomeModel extends Model {
    @Id
    public Long id;

    public String someStringAttribute;
}
4

2 回答 2

3

在模型前添加@Entity

@Entity 公共类 SomeModel 扩展模型 {

于 2013-08-28T03:31:49.030 回答
2

尝试在 a 中运行您的测试代码fakeApplication()

import ...
import play.test.Helpers.*;

public class TestSomeModel extends BaseModelTest {
    @Test
    public void myModelCreate() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                SomeModel model = new SomeModel();
                model.someStringAttribute = "some value";

                assertThat(model.id).isNull();

                model.save();  

                assertThat(model.id).isPositive();
            }
        }
    }
}
于 2013-08-25T12:03:31.967 回答