gpt4 book ai didi

java - 使用内存数据库 PlayFramework 执行 JUnit 测试

转载 作者:行者123 更新时间:2023-12-01 11:46:32 24 4
gpt4 key购买 nike

我尝试在 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();
}

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

最佳答案

在 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
}

关于java - 使用内存数据库 PlayFramework 执行 JUnit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29096248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com