gpt4 book ai didi

java - 运行集成测试时嵌入 MongoDB

转载 作者:行者123 更新时间:2023-12-01 18:26:52 25 4
gpt4 key购买 nike

我的问题是 this one 的变体.

由于我的 Java Web 应用程序项目需要大量读取过滤器/查询以及与 GridFS 等工具的接口(interface),因此我正在努力想出一种按照上述解决方案建议的方式使用 MongoDB 的明智方法。

因此,我正在考虑在集成测试的同时运行 MongoDB 的嵌入式实例。我希望它自动启动(无论是针对每个测试还是整个套件),为每个测试刷新数据库,然后关闭 在最后。这些测试可能会在开发计算机以及 CI 服务器上运行,因此我的解决方案还需要可移植

任何对 MongoDB 有更多了解的人都可以帮助我了解这种方法的可行性,和/或建议任何可能帮助我入门的阅读 Material 吗?

我也愿意接受人们可能对我如何解决这个问题提出的其他建议......

最佳答案

我找到了Embedded MongoDB图书馆看起来很有前途并且可以满足您的要求。

当前支持 MongoDB 版本:1.6.53.1.6,前提是二进制文件仍然可以从配置的镜像中获得。

这是一个简短的使用示例,我刚刚尝试过并且效果很好:

public class EmbeddedMongoTest {
private static final String DATABASE_NAME = "embedded";

private MongodExecutable mongodExe;
private MongodProcess mongod;
private Mongo mongo;

@Before
public void beforeEach() throws Exception {
MongoDBRuntime runtime = MongoDBRuntime.getDefaultInstance();
mongodExe = runtime.prepare(new MongodConfig(Version.V2_3_0, 12345, Network.localhostIsIPv6()));
mongod = mongodExe.start();
mongo = new Mongo("localhost", 12345);
}

@After
public void afterEach() throws Exception {
if (this.mongod != null) {
this.mongod.stop();
this.mongodExe.stop();
}
}

@Test
public void shouldCreateNewObjectInEmbeddedMongoDb() {
// given
DB db = mongo.getDB(DATABASE_NAME);
DBCollection col = db.createCollection("testCollection", new BasicDBObject());

// when
col.save(new BasicDBObject("testDoc", new Date()));

// then
assertThat(col.getCount(), Matchers.is(1L));
}
}

关于java - 运行集成测试时嵌入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60216233/

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