【问题标题】:Perform JUnit test using in memory database PlayFramework使用内存数据库 PlayFramework 执行 JUnit 测试
【发布时间】:2015-03-17 10:05:32
【问题描述】:

我尝试在 PlayFramework 2.3.8 中执行一些 JUnit 测试我希望在内存数据库中执行此测试,以便保持“真实”数据库不变。 这就是我所做的:

public class SaveToolsTest extends WithApplication{

    @Before
public void startApp(){

    // Start the app in the in memory database. 
    Map<String, String> settings = new HashMap<String, String>();
    settings.put("db.default.url", "jdbc:h2:mem:play");
    settings.put("db.default.user", "");
    settings.put("db.default.password", "");
    app = Helpers.fakeApplication(settings);
    Helpers.start(app);
    }

    @Test
    public void saveUser(){     
         User user = createUser(); 

        // Save the user into DB. 
        Ebean.save(user);

        // Test if user != null
        assertNotNull(user); 
        assertThat(user.id).isNotNull(); 
    }

但是通过这样做,我将测试连接到实际的数据库。 如何将其连接到内存数据库?

【问题讨论】:

  • 你检查了吗similar
  • @singhakash 我做了,并做类似上面编辑过的代码的事情。对吗?
  • @Mornor 似乎在我对您的另一个问题的回答中也回答了这个问题:stackoverflow.com/questions/29101562/…
  • @jsonmurphy:你显然做到了!

标签: java junit playframework ebean playframework-2.3


【解决方案1】:

在 Play 2.3 及更高版本中,您可以通过覆盖 provideFakeApplication() 方法来指定测试应用程序(及其设置,如使用的数据库)。 Play 将调用此方法并在运行测试之前启动您返回的应用程序。

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

public class MyTest extends WithApplication {

@Override
public FakeApplication provideFakeApplication(){
    return fakeApplication(inMemoryDatabase());
}

@Test
public void myTest(){
     //your tests here
}

【讨论】:

    猜你喜欢
    • 2020-03-20
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2015-11-20
    • 2016-10-26
    相关资源
    最近更新 更多