2 Stimmen

Fluent NNhibernate Exception bei der Ausführung von MSTest über die Befehlszeile

Ich schreibe einige Unit-Tests für Fluent NHibernate Mappings (zum ersten Mal). Wenn sie in Visual Studio ausgeführt werden, laufen sie vollkommen problemlos.

Dies geschieht mit Resharpers Unit-Test-Fenster oder dem in Visual Studio eingebauten Fenster.

Das Problem tritt auf, wenn die Unit-Tests von MSTest aus ausgeführt werden:

mstest /testcontainer:Tests.MyProject.dll

Die Unit-Tests schlagen fehl...

Der einzige Fehler, den ich in der erzeugten trx-Datei erhalte, ist folgender:

BlockquoteUnit Test Adapter hat eine Ausnahme ausgelöst: Typ ist nicht aufgelöst für Member 'FluentNHibernate.Cfg.FluentConfigurationException,FluentNHibernate, Version=1.2.0.694, Culture=neutral, PublicKeyToken=8aa435e3cb308880'..

Was nicht hilft... Ich kann den Code nicht debuggen, weil es funktioniert perfekt in Visual Studio, und die Fehlermeldung in der Testdatei gibt mir keine Informationen...

Der Code zum Erstellen der Sitzung lautet:

    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();
        }
    }

Ich bin mir nicht sicher, ob dies die richtige Art und Weise der Erstellung der Sitzung für Unit-Tests tho ist.

Hat jemand eine Idee, was los ist :(

2voto

Phill Punkte 17707

Ich habe dieses Problem gelöst. Es stellte sich heraus, dass es ein PEBKAC-Problem war.

Für die Testkonfiguration musste ich die System.Data.Sqlite-Assembly zur Konfiguration hinzufügen, damit sie vor der Ausführung des Tests in den Ordner TestResult kopiert wurde.

Die FluentNHibernate-Konfigurationsausnahme bestand also darin, dass die Sqlite-Assembly nicht vorhanden war.

Nach dem Hinzufügen der Baugruppe wurde der Test in der Konsole ausgeführt und läuft nun auch in den Integrations-Builds. YAY.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X