从命令行运行MSTest时出现流畅的Nhibernate异常

时间:2010-12-24 04:53:44

标签: c# unit-testing exception fluent-nhibernate mstest

我正在为Fluent NHibernate映射编写一些单元测试(这是第一次)。在视觉工作室中运行时,它们运行得非常好。

这是使用Resharpers Unit Test窗口或内置的Visual Studio窗口。

问题是从MSTest运行单元测试时:

mstest /testcontainer:Tests.MyProject.dll

单元测试失败......

我从生成的trx文件中得到的唯一错误是:

  

BlockquoteUnit测试适配器抛出异常:成员'FluentNHibernate.Cfg.FluentConfigurationException,FluentNHibernate,Version = 1.2.0.694,Culture = neutral,PublicKeyToken = 8aa435e3cb308880'..

哪个没有帮助......我无法调试代码,因为它在visual studio中工作得非常好,测试文件中的错误消息并没有给我任何信息......

创建会话的代码是:

    public class InMemoryDatabaseTest : IDisposable
    {
        private Configuration _configuration;
        private ISessionFactory _sessionFactory;
        protected ISession _session;

        public InMemoryDatabaseTest(Assembly assemblyContainingMappedType)
        {
            if (_configuration == null)
                _sessionFactory = CreateSessionFactory(assemblyContainingMappedType);

            _session = _sessionFactory.OpenSession();

            new SchemaExport(_configuration).Execute(false, true, false, _session.Connection, Console.Out);
        }

        private ISessionFactory CreateSessionFactory(Assembly assemblyContainingMappedType)
        {
            return Fluently.Configure()
                .Database(SQLiteConfiguration.Standard.InMemory)
                .Mappings(m => m.FluentMappings.AddFromAssembly(assemblyContainingMappedType))
                .ExposeConfiguration(cfg => _configuration = cfg)
                .BuildSessionFactory();
        }

        public void Dispose()
        {
            _session.Dispose();
        }
    }

我不确定这是否是为单元测试创​​建会话的正确方法。

任何人都知道出了什么问题:(

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。原来这是一个PEBKAC问题。

对于测试配置,我需要将System.Data.Sqlite程序集添加到配置中,以便在运行测试之前将其复制到TestResult文件夹。

因此FluentNHibernate配置异常是Sqlite程序集不存在。

添加程序集,测试在控制台中运行,现在在集成构建上运行。 YAY。