Reputation: 18794
I'm writing some unit tests for Fluent NHibernate mappings (for the first time). When run in visual studio they run perfectly fine.
This is using Resharpers Unit Test window or the built in Visual Studio one.
The problem is when the unit tests are run from MSTest:
mstest /testcontainer:Tests.MyProject.dll
The unit tests fail...
The only error I get from the trx file thats generated is:
BlockquoteUnit Test Adapter threw exception: Type is not resolved for member 'FluentNHibernate.Cfg.FluentConfigurationException,FluentNHibernate, Version=1.2.0.694, Culture=neutral, PublicKeyToken=8aa435e3cb308880'..
Which doesn't help... I can't debug the code because it works perfectly fine in visual studio, and the error message in the test file doesn't give me any information...
The code around creating the session is:
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();
}
}
I'm not sure if this is the correct way of creating the session for unit testing tho.
Anyone got any idea what's wrong :(
Upvotes: 2
Views: 1069
Reputation: 18794
I solved this problem. Turns out it was a PEBKAC problem.
For the test configuration I needed to add the System.Data.Sqlite assembly to the configuration so that it got copied to the TestResult folder prior to the test being run.
So the FluentNHibernate Configuration exception was that the Sqlite assembly didn't exist.
Adding the assembly, the test ran in the console and now runs on the integration builds. YAY.
Upvotes: 2