在测试结果输出中显示RavenDB请求

时间:2011-12-17 11:11:42

标签: ravendb

我希望在运行测试时,所有对RavenDb的调用都会显示在Resharper testrunner中,是否可以在客户端启用某种日志记录或跟踪?

2 个答案:

答案 0 :(得分:4)

佩尔, RavenDB使用NLog来记录其操作。您可以将NLog配置为输出从Raven.Client。*到控制台/调试的所有内容,您可以使用以下配置执行此操作:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.netfx35.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
        <target xsi:type="Console" Name="Console" />
    </targets>
    <rules>
        <logger name="Raven.Client.*" writeTo="Console"/>
    </rules>
</nlog>

答案 1 :(得分:1)

这只是我头脑中的问题。我使用Resharper和NUnit或XUnit。要在Resharper单元测试输出窗口中获取任何信息,我只需使用Debug.WriteLine("blah");工作得很好。

现在RavenDb确实有一些地方你可以通过创建自己的Debug.WL(..)来添加自己的自定义逻辑,例如IDocumentQueryListener ..

所以也许实施其中一个?

public class DebugWriteLineDocumentListener : IDocumentQueryListener
{
    #region Implementation of IDocumentQueryListener

    public void BeforeQueryExecuted(IDocumentQueryCustomization queryCustomization)
    {
        // Do whatever you want, here.
        // UnTested .. but I *think* the ToString will list the Linq query.
        Debug.WriteLine(queryCustomization.ToString());
    }

    #endregion
}

然后只需使用DocumentStore ...

注册此监听器
documentStore.RegisterListener(new DebugWriteLineDocumentListener());

看看是否有帮助..

我没有尝试过......只是我头脑中的第一件事:)

GL!让我们发布!