java - 如何在Play 2.1中正确编写数据库集成测试?

标签 java playframework-2.0 integration-testing

我是 Play 的新人! 2.1.我正在尝试 TDD 我的数据库集成测试。阅读网站上的示例后。我这样写了我的测试。


    @Test
    public void shouldGetDealName() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                List books = Book.find.all();
                Assert.assertEquals(books.size(), 1);
            }
        });
    }

我的问题是,我是否需要始终将代码包装在 running(fakeAppliation()... 中?因为如果我在没有 fakeApplication 的情况下运行此代码。它似乎不起作用。如果必须这样,那么是否有更好的方法在 Java 中执行此操作?对于我来说,每次进行集成或功能测试时都将代码包装在该 block 中似乎是错误的。

谢谢。

最佳答案

假设您想使用内存数据库并且希望为每个测试重新创建它,您可以这样做:

public class ApplicationTest extends WithApplication {
    @Before
    public void setup() {
        start(fakeApplication(inMemoryDatabase(), fakeGlobal()));
    }

    @Test
    public void shouldGetDealName() {
        List books = Book.find.all();
        Assert.assertEquals(books.size(), 1);
    }
}

关于java - 如何在Play 2.1中正确编写数据库集成测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960377/

相关文章:

playframework-2.0 - play-framework [2.0] 不会加载项目定义

scala - 方法映射的参数太多 : (apply: (String, models.Address) => R)(unapply : R => Option[(String, models.Address)])play.api.data.Mapping[R]

selenium-webdriver - Chrome 开发工具 API 和 Selenium WebDriver

.net - MSBuild (TFS) 中的 Nhibernate.Bytecode.CaSTLe 问题

java - 带有对象引用的 JPA 复合键

java - 找到 NFC 标签时 Activity 重新打开

java - 将父类(super class)转换为子类

templates - Play 2.0 - 在模板中映射 `map` 或 `for-yield` 结果

java - 下载单元测试

java - 双向多语言字符串转换