C# 如何使用resharper和xunit 2捕获NHibernate的SQL语句

C# 如何使用resharper和xunit 2捕获NHibernate的SQL语句,c#,unit-testing,nhibernate,resharper,xunit,C#,Unit Testing,Nhibernate,Resharper,Xunit,我试图在单元测试会话的Resharper输出中显示来自XUnit 2.x单元测试的nhibernate的sql语句,但它会记录sql语句 使用MSpec测试时不会出现问题,并且会显示sql语句。使用xUnit1.x我想sql语句也会被记录下来 我已通过属性show\u sql <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <prop

我试图在单元测试会话的Resharper输出中显示来自XUnit 2.x单元测试的nhibernate的sql语句,但它会记录sql语句

使用MSpec测试时不会出现问题,并且会显示sql语句。使用xUnit1.x我想sql语句也会被记录下来

我已通过属性
show\u sql

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="show_sql">true</property>
  </session-factory>
</hibernate-configuration>

真的
XUnit2中有捕获输出的方法,但我不确定如何将其与NHibernate结合起来记录sql语句

有没有人能解决这个问题?我试图在我的单元测试中避免log4net集成,只是为了记录这些语句

XUnit 2.1, NHibernate 4.0, ReSharper 2016.3.1,
Visual Studio 2013

感谢@David Osborne的评论,我使用
EmptyInterceptor
捕获NHibernate的SQL语句,并将它们写入XUnit框架提供的
ITestOutputHelper

public class XUnitSqlCaptureInterceptor : EmptyInterceptor
{
    public XUnitSqlCaptureInterceptor(ITestOutputHelper output)
    {
        this.Output = output;
    }

    public ITestOutputHelper Output { get; set; }

    public override SqlString OnPrepareStatement(SqlString sql)
    {
        this.Output.WriteLine(sql.ToString());

        return sql;
    }
}
用法如下:

[Fact]
public void MyUnitTestWithSQL()
{
    using (var session = factory.OpenSession(new XUnitSqlCaptureInterceptor(this.output)))
    {
        using (var transcation = session.BeginTransaction())
        {

        }
    }
}

使用xUnit的
ITestOutputHelper
和此处建议的拦截器可能是可行的:从哪里到工厂?以及this.output?