Das Testen von Einheiten mit Effort und SQL CE parallel schlägt fehl

8

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

    
Marcel 12.04.2014, 17:03
quelle

2 Antworten

8

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%     
Jeff Schreiber 04.03.2015 23:48
quelle
0

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!

    
Dashu 04.08.2015 11:12
quelle