Ich teste Unit Tests mit EF6 in Kombination mit
Ссылка war eine ziemlich gute Referenz, aber jetzt ich bin festgefahren.
Ich habe 2 Test-Projekte (eins für Effort und das andere für SQL CE). Wenn ich beide getrennt renne, ist alles in Ordnung. Wenn das letzte Testprojekt mit dem ReSharper Test Runner nacheinander ausgeführt wird, schlägt das letzte Testprojekt immer fehl. Entweder
System.InvalidOperationException: Das Entity Framework war bereits vorhanden Verwenden einer DbConfiguration-Instanz, bevor ein Versuch unternommen wurde, eine Instanz hinzuzufügen 'Loaded' Event-Handler. 'Loaded' Event Handler können nur als hinzugefügt werden Teil der Anwendung wird gestartet, bevor das Entity Framework verwendet wird.
oder
System.InvalidOperationException: Die standardmäßige DbConfiguration-Instanz wurde vom Entity Framework verwendet, bevor ein Versuch unternommen wurde, ein Instanz von 'SqlCeConfiguration'. Die 'SqlCeConfiguration' Instanz muss beim Anwendungsstart festgelegt werden, bevor Entity Framework-Funktionen verwendet werden oder muss in der Konfigurationsdatei der Anwendung registriert sein.
Es ist immer das Gleiche. Der Nachfolger erbt die DbConfiguration-Instanz vom Vorgänger. Wie kann ich beide Testprojekte / Konfigurationen ohne Nebenwirkungen ausführen?
Hier ist meine DbContext -Klasse:
%Vor%Das ist das Testgerät mit Aufwand :
%Vor%Das ist das Testgerät mit SQL CE :
%Vor%und die my SqlCeConfiguration :
%Vor%Vielen Dank!
Marcel
Beim Ausführen aller UnitTests auf unserem Build-Server oder beim lokalen Ausführen aller UnitTests wurden dieselben Fehler angezeigt.
System.InvalidOperationException: Das Entity Framework war bereits vorhanden Verwenden einer DbConfiguration-Instanz, bevor ein Versuch unternommen wurde, eine Instanz hinzuzufügen 'Loaded' Event-Handler. 'Loaded' Event Handler können nur als hinzugefügt werden Teil der Anwendung wird gestartet, bevor das Entity Framework verwendet wird.
Nachdem wir den Effort Provider-Registrierungscode von der Methode [TestInitialize] in die AssemblyInitialize-Methode verschoben hatten, funktionierte alles. Basierend auf der Nachricht in dem gemeldeten Fehler scheint es, dass die Registrierung nicht mehr als einmal erfolgen kann.
%Vor%Ich bin gerade auf dieses Problem gestoßen und dachte, ich würde die Ursache meines Problems teilen.
Alles hat gut funktioniert, bis ich ActionFilter implementiert habe. Es stellte sich heraus, dass der Aufwandscode in meinem Test nach der Instanziierung meiner Website ausgeführt wurde. Durch die Instanziierung der Website instanziiert mein Filter, forderte mein Filter einen DataContext aus dem Container.
Also hatte jemand den Datenkontext bereits benutzt, bevor ich versucht habe, ihn mit Effort zu konfigurieren.
Ich hoffe, dies könnte jemandem in der Zukunft helfen, auch wenn es eine etwas andere Sache ist, und ich hoffe, Sie haben Ihr Problem am Ende gelöst!
Tags und Links c# entity-framework unit-testing sql-server-ce