Unit testing Play Framework 2.3中模型的单元测试

Unit testing Play Framework 2.3中模型的单元测试,unit-testing,playframework,playframework-2.0,junit4,ebean,Unit Testing,Playframework,Playframework 2.0,Junit4,Ebean,我们最近从PlayFramework2.1迁移到了2.3,一些单元测试停止了工作 在这个特定的单元测试中,我使用了一个从ebean扩展模型的对象。我确保不使用ebean中的任何函数(如find(),save()或update()) 不幸的是,仅仅通过创建我的对象,我就得到了一个异常,因为它试图启动Model.Finder成员,我很确定它在迁移之前没有这样做。我怎样才能克服这个问题 My setUp函数,该函数在new调用时引发异常 @Before public void setUp() thro

我们最近从PlayFramework2.1迁移到了2.3,一些单元测试停止了工作

在这个特定的单元测试中,我使用了一个从ebean扩展模型的对象。我确保不使用ebean中的任何函数(如
find()
save()
update()

不幸的是,仅仅通过创建我的对象,我就得到了一个异常,因为它试图启动
Model.Finder
成员,我很确定它在迁移之前没有这样做。我怎样才能克服这个问题

My setUp函数,该函数在
new
调用时引发异常

@Before
public void setUp() throws Exception {  
    SignageScheduleEntry allTheTimeSchedule = new SignageScheduleEntry();
}
我的对象本身,在调试单元测试时在新Model.Finder上失败:

public static Model.Finder<Long,SignageScheduleEntry> find = new Model.Finder<>(Long.class, SignageScheduleEntry.class);

    public SignageScheduleEntry() throws InvalidPeriodException {   
        ....
    }
public static Model.Finder find=new Model.Finder(Long.class,SignageScheduleEntry.class);
public SignageScheduleEntry()引发InvalidPeriodException{
....
}
简言之,我想在单元测试中使用我的对象而不使用ebean垃圾,就像任何单元测试中的任何对象一样。我怎样才能做到这一点

谢谢

如图所示:

您需要创建一个“伪造应用程序”,如下所示:

如果这不起作用,或者如果这不是您想要的,那么另一种方法更为复杂,并且与Java文档的重头戏相比更复杂:


基本上,您必须为模型创建一个包装器,并在单元测试中模拟包装器。

我想创建一个假的应用程序一定非常慢。。。Play框架肯定落后于与单元测试和TDD相关的其他框架。。。不管怎样,我现在没有选择的余地!谢谢
import org.junit.Test;

import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.running;

import static org.fest.assertions.Assertions.assertThat;

import models.Task;

public class TaskTest {

    @Test
    public void create() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                Task task = new Task();
                task.contents = "Write a test";
                task.save();
                assertThat(task.id).isNotNull();
            }
        });
    }

}