Свободное исключение NNhibernate при запуске MSTest из командной строки - PullRequest
2 голосов
/ 24 декабря 2010

Я пишу некоторые юнит-тесты для отображений Fluent NHibernate (впервые). При запуске в визуальной студии они работают отлично.

Это окно Resharpers Unit Test или встроенное в Visual Studio.

Проблема в том, что модульные тесты запускаются из MSTest:

mstest /testcontainer:Tests.MyProject.dll

Сбой модульных тестов ...

Единственная ошибка, которую я получаю из сгенерированного файла trx:

Исключение выдает тестовый адаптер BlockquoteUnit: тип не разрешен для члена 'FluentNHibernate.Cfg.FluentConfigurationException, FluentNHibernate, версия = 1.2.0.694, культура = нейтральная, 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 Ответ

2 голосов
/ 25 декабря 2010

Я решил эту проблему.Оказывается, это была проблема PEBKAC.

Для конфигурации теста мне нужно было добавить сборку System.Data.Sqlite в конфигурацию, чтобы она была скопирована в папку TestResult до запуска теста.

Итак, конфигурация FluentNHibernateИсключением было то, что сборка Sqlite не существовала.

При добавлении сборки тест выполнялся в консоли и теперь выполняется на интеграционных сборках.YAY.

...