简体   繁体   中英

Fluent NNhibernate Exception when running MSTest from commandline

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 :(

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM