VS2012 & TFS2012 Unit Test Hauptprobleme

Wir verwenden VS2012 und TFS2012 und schreiben Unit-Tests für unseren Code. Wir möchten die Codeabdeckung melden und in unseren Komponententests auch .config-Dateien für Test-Apps-Einstellungen sowie einige andere Einstellungen für die Protokollierung, Einstellungen der MS Enterprise-Bibliothek usw. usw. verwenden.

App.config funktioniert nicht in neuem Testframework

Das neue Test-Framework von MS sollte großartig sein, aber für mich ist es überhaupt nicht so großartig. Wie nehme ich an, einige grundlegende Konfiguration in Konfigurationsdateien einzustellen, wenn das neue Framework keine Konfigurationsdateien mehr verwendet?

Wir hatten ein Problem mit DLLs im gemischten Modus und fanden eine Lösung: Hinzufügen

<startup useLegacyV2RuntimeActivationPolicy="true"> 

in die app.config. Bei unserem Unit-Test-Projekt hat dies jedoch nicht geklappt. Weil Konfigurationsdateien nicht mehr da sind. Beim Durchsuchen des Internets wurde eine Lösung gefunden

'Probleme mit .Net 2.0-Assemblys im gemischten Modus in Visual Studio .Net 4.5-Testprojekten'

Dies bedeutet, dass Sie eine Datei von Visual Studio 11 selbst im Programmdateiverzeichnis bearbeiten müssen, was meiner Meinung nach keine gute Lösung ist.

Und wie wäre es mit einem einfachen Appsetting? Wie soll ich das einstellen?

Verwenden Sie nicht die .testSettings-Datei

Die Verwendung der alten .testsettings-Datei wird von MS ebenfalls nicht empfohlen, da dann das alte Testframework verwendet wird. Und wenn ich die .testsettings-Datei verwende, kann ich Code Coverage auf meinem tfs2012-Build-Service nicht einrichten.

Ein weiteres Problem ist, dass wir Code haben, der eine DLL benötigt (system.data.sqlite.dll), aber nur zur Laufzeit benötigt der Unit-Test-Code diese DLL. Eine Referenz wird also nicht benötigt. Wir haben dies behoben, indem wir die Registerkarte "Bereitstellung" in der Testeinstellungsdatei verwendet haben. In dem neuen Framework sollten Sie jedoch die Datei testsettings nicht verwenden. Sie haben das Attribut [deploymentitem], wenn Sie Dateien benötigen. Das Attribut deploymentitem kann jedoch nur für eine [testmethod] -Methode und nicht für eine [testinitialize] - oder [assemblyinitialize] -Methode verwendet werden. Unser Code benötigt jedoch die DLL in der Methode [testinitialize]. Es gibt also keine Möglichkeit, die DLL zu installieren.

Kopieren Sie es einfach mit File.Copy in der Methode [assemblyinitialize] (oder testinitialize) funktioniert nicht.

Hinzufügen der DLL als Datei zum Projekt und Festlegen der Option "In Ausgabeverzeichnis kopieren" auf "Immer kopieren", wie in "Konfigurieren von Komponententests mithilfe einer .runsettings-Datei'funktioniert auch gar nicht.

Die (wirklich nicht großartige) Lösung hierfür besteht darin, die DLL als Referenz hinzuzufügen, dann eine Klasse zu instanziieren und nichts damit zu tun. Auf diese Weise wird die DLL benötigt, andernfalls wird sie nicht erstellt, und daher stellt sich die DLL in den richtigen Verzeichnissen bereit.

wie löse ich mein problem ??? - Ich möchte Konfigurationsdateien in meinem Unit-Test verwenden. - Ich möchte einige Dateien bereitstellen, die für die Methoden 'assemblyinitialise' und / oder 'classinitialize' erforderlich sind. - Ich möchte, dass die Codeabdeckung für meinen nächtlichen TFS2012-Build aktiviert wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage