我正在为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();
}
}
我不确定这是否是为单元测试创建会话的正确方法。
任何人都知道出了什么问题:(
答案 0 :(得分:2)
我解决了这个问题。原来这是一个PEBKAC问题。
对于测试配置,我需要将System.Data.Sqlite程序集添加到配置中,以便在运行测试之前将其复制到TestResult文件夹。
因此FluentNHibernate配置异常是Sqlite程序集不存在。
添加程序集,测试在控制台中运行,现在在集成构建上运行。 YAY。