Unit testing Play Framework 2.3中模型的单元测试
我们最近从PlayFramework2.1迁移到了2.3,一些单元测试停止了工作 在这个特定的单元测试中,我使用了一个从ebean扩展模型的对象。我确保不使用ebean中的任何函数(如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
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();
}
});
}
}