在我的单元测试中,我设置每个测试都有一个完全空的IDocumentSession。我是这样做的:
[SetUp]
public void SetUp()
{
_store = new EmbeddableDocumentStore
{
RunInMemory = true
};
_store.Initialize();
Session = _store.OpenSession();
}
但我认为这可能是我的测试有点慢的原因。我想知道是否有一个简单的命令来删除数据库中的所有文件。
我想知道的是:如果我能做到这一点,以及它是否会提高性能。
答案 0 :(得分:25)
这是使用ravendb进行单元测试的推荐方法 不推荐用于生产基本上在内存模式下运行 如果你觉得这很慢,那就尝试分析并找出究竟是什么减慢了事情
答案 1 :(得分:21)
尝试使用RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true
。
var _store = new EmbeddableDocumentStore()
{
Configuration =
{
RunInUnreliableYetFastModeThatIsNotSuitableForProduction = true,
RunInMemory = true,
}
};
答案 2 :(得分:6)
昂贵的呼叫是_store.Initialize()
- 你强迫RavenDb在每次测试时都站起来一个新的数据库。在大多数情况下,每个测试套件运行一个数据库都可以运行
另一个选择是使用nature或RavenDb的ID来命名测试。如果真正的问题是重复的键错误和其他工程方面的事情,这是非常方便的,所以你没有一个讨厌的清理。
答案 3 :(得分:3)
我知道这是一个老问题,但是从RavenDB 2.0开始(还不稳定)有一个Raven Test Helper可用作Nuget包,在单元测试RavenDB时非常有用。
http://ravendb.net/docs/samples/raven-tests/createraventests?version=2.0
http://nuget.org/packages/RavenDB.Tests.Helpers/2.0.2198-Unstable