Laden...

[gelöst]Integrations Test mit zufälliger System.InvalidOperationException

Erstellt von Palin vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.474 Views
P
Palin Themenstarter:in
1.090 Beiträge seit 2011
vor 7 Jahren
[gelöst]Integrations Test mit zufälliger System.InvalidOperationException

Hallo Zusammen,

gestern Morgen hab ich bei unseren Nightly Build der Dev Branche bei vielen der Integrations Tests folgenden Fehler vorgefunden.

Fehlermeldung:
Fehler: System.InvalidOperationException: Der in der Anwendungskonfigurationsdatei für den ADO.NET-Anbieter mit dem invarianten Namen 'System.Data.SqlClient' registrierte Entity Framework-Anbietertyp 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' konnte nicht geladen werden. Stellen Sie sicher, dass der von der Assembly qualifizierte Name verwendet wird und dass die Assembly der ausgeführten Anwendung zur Verfügung steht. Weitere Informationen finden Sie unter 'http://go.microsoft.com/fwlink/?LinkId=260882'..

Als erstes habe ich mir dann die AppConfig angeschaut, die sah aber korrekt aus. Als nächstes hab ich dann mal einen der Fehler haften Unit Tests laufen, lassen und der Funktionierte.

Dann hab ich wieder alle Laufen lassen und es kam wider zu Fehlern.

Da ich die Annahme hatte, das es an einen der liegt, der da was macht was die nachfolgenden Fehlschlagen lässt. Hab ich nach und nach die Tests eingeschränkt.
Bis ich den dachte den Fehler haften Test gefunden zu haben. Und das Problem.

Der Test hatte folgendes Attribut


     [DeploymentItem(@"App_Data\Config\appSettings.config")]   

Ich hab es dann an allen Stellen die ich gefunden habe entfernt. Und hab alle IntegrationsTest laufen lassen und sie Funktionierten.

Änderungen Eingecheckt und den Build zur Sicherheit auch noch mal auf den Server dort Funktionierte es auch.

Heute Morgen hatte der Build aber wider den gleichen Fehler.

Also aktuelle Version ausgescheckt und gesucht ob das Attriebut wieder irgend wo aufgetaucht ist.
Nicht zu finden.

Test laufen lassen und dann kamen wider Fehler.

Dann hab ich wider Probiert den Fehler auf einen Test einzugrenzen, was mir dieses mal nicht gelungen ist.

Also hab ich mal die letzte Version ausgescheckt, bei der der Build nachts funktioniert. Und und was nicht wundert, die Test funktionierten.

Aktuell fällt mir nur ein alle Änderungen seit Vorgestern durchzugehen und zu schauen ob es an ihnen liegen könnte. Das würde ich aber gerne Vermeiden.

Hat jemand eine bessere Idee?

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern

P
Palin Themenstarter:in
1.090 Beiträge seit 2011
vor 7 Jahren

Ok ich hab jetzt, bei der Hälfte der an dem Eingecheckten Änderung angefangen und davon wieder die Hälfte benutzt usw. bis das ChangeSet gefunden hatte ab dem der Fehler auftritt.

Dann hab ich mir die Änderungen in dem ChangSet angeschaut um vielleicht was auffälliges zu sehen.
Hab aber nicht gefunden. Also hab ich mir das ChangeSet davor ausgescheckt. Und bin schritt für schritt jede Änderung durchgegangen und hab jedes mal danach die Integrationstests laufen lassen. X(

Es stellte sich heraus, das der Fehler durch Ein- und Auskommentieren. Einer Zeile in Ähnlicher Form wie folgende reproduzierbar machte.

var myObjekt = new ObjektFromOtherAssambly();       

Also da wir einen IoC Container benutzen, der natürlich auch bei dem Integrations Test verwendet wird. Ist mit dem Eintrag wohl der letzte konkrete Verweis auf ein Objekt des Assamblys verloren gegangen. So das VS jetzt die Abhängigkeiten nicht richtig auflöst.

Ich könnte ja verstehen, dass das Probleme macht. Aber die sollten eigentlich, gelöst werden wenn ich Unter Verweise die nötigen Assemblies mit angebe und auf LokaleCopy true stelle. Was mich auch wundert ist, das die Test Funktionieren wenn ich sie einzeln Ausführe.

Sollte man mal gelesen haben:

Clean Code Developer
Entwurfsmuster
Anti-Pattern