单元测试RavenDB

时间:2011-09-23 18:39:46

标签: unit-testing ravendb

在我的单元测试中,我设置每个测试都有一个完全空的IDocumentSession。我是这样做的:

[SetUp]
public void SetUp()
{
  _store = new EmbeddableDocumentStore
  {
     RunInMemory = true
  };

  _store.Initialize();

  Session = _store.OpenSession();
}

但我认为这可能是我的测试有点慢的原因。我想知道是否有一个简单的命令来删除数据库中的所有文件。

我想知道的是:如果我能做到这一点,以及它是否会提高性能。

4 个答案:

答案 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