Playframework 2.0 play框架:使用假应用程序进行测试

Playframework 2.0 play框架:使用假应用程序进行测试,playframework-2.0,playframework-2.1,Playframework 2.0,Playframework 2.1,我正在尝试测试如下功能: @Test public void testAddTask() { FakeApplication fakeApplication = fakeApplication(inMemoryDatabase()); start(fakeApplication); Task task=new Task(); task.title="test Task"; task.save();

我正在尝试测试如下功能:

@Test
    public void testAddTask() {
        FakeApplication fakeApplication = fakeApplication(inMemoryDatabase());
        start(fakeApplication);
        Task task=new Task();
        task.title="test Task";
        task.save();
        assertThat(Task.find.where().ilike("title", "task")).isNull();
        stop(fakeApplication);

    }
谁成功了谁错了 当

失败了,这就是我所期望的

startMakeApplication
的行为不应该与“正在运行(fakeApplication()”的行为相同吗?

是的,它

/**
*在正在运行的应用程序中执行代码块。
*/
公共静态同步无效运行(FakeApplication FakeApplication,最终可运行块){
试一试{
启动(伪造申请);
block.run();
}最后{
停止(伪造申请);
}
}
造成差异的原因可能是在运行其他测试后未进行清理。
running()
具有
try..finally
构造,将
停止(fakeApplication);
放入
后注释为
@的方法中(建议在
中初始化
fakeApplication

我不喜欢
running()
helper方法,因为它不允许在
run()
中抛出异常

@Test
    public void testAddTask(){
        running(fakeApplication(inMemoryDatabase()), new Runnable() {
            public void run() {
                Task task=new Task();
                task.title="test Task";
                task.save();
                assertThat(Task.find.where().ilike("title", "task")).isNull();
            }
        });
    }