21

Ist es praktisch/möglich, Jasmintests in ein separates Visual Studio Projekt zu unterteilen?Jasmine in einem separaten Testprojekt

Ich beginne gerade mit angular, und versuche, meine Tests zu schreiben, bevor ich auf der tatsächlichen angulären Implementierung anfange. Ich werde mein Projekt in Visual Studio 2012 mit dem Chutzpah Test Runner schreiben, siehe hierzu video. Momentan versuche ich herauszufinden, wie ich meine Ordnerstruktur organisieren soll. Ich weiß über Angular Seed und Yeoman Bescheid, aber diese sind ungeeignet, ein .net-Projekt zu starten.

Ich gehe davon aus, dass, da Komponententests in Visual Studio in der Regel in ein separates Testprojekt getrennt werden, die Jasmin-Tests auch konventionell sein sollten.

Allerdings, für Java-Skript, gibt es keine Projekt-DLLs zu verweisen, so die Tests in ein anderes Projekt zu trennen würde viel kopieren und einfügen, denke ich.

Antwort

18

Sie können dies ohne Kopieren/Einfügen tun. In Ihren Jasmine-Tests können Sie einen /// <reference Kommentar hinzufügen, der Ihre Quelldateien (oder das Verzeichnis, das sie enthält) postet. Zum Beispiel dieses sturcture gegeben

/ProjectA/scripts

code1.js 
code2.js 

/TestProjectB test1.js

Sie können diese Zeile am Anfang Ihrer test1.js Datei fügen Sie alle verweisen Ihre Code-Dateien:

//// <reference path="../scripts" /> 
+7

als Ergänzung, anstatt sich Gedanken darüber zu machen, wie viele ../ hinzuzufügen, ziehen Sie einfach die Quelldatei in den Arbeitsbereich und der Referenzpfad wird automatisch hinzugefügt. –

+0

Hi @Matthew Manela, ich bin nicht in der Lage, die 'code.js' aus dem' spec' Projekt zu beziehen. Ich habe eine Lösung mit zwei Projekten. ein ** Projekt ** und ein ** SpecProject **. Wenn ich die Lösung starte. Beide Projekte laufen in separaten Ports als verschiedene Anwendungen. Und ich bin nicht in der Lage, den code.js zu verweisen. Bitte hilf mir. –

+0

Wenn ich versuche, wie in der obigen Antwort auf ein Verzeichnis zu verweisen, beschwert sich Visual Studio, dass nur Dateien mit der Erweiterung .ts zulässig sind. Wenn ich jedoch explizit auf die.ts aus dem Hauptprojekt, beginne ich TS Kompilierungsfehler überall in der TS Datei zu referenzieren –

-2

Denken Sie, Sie sollten Standard-Ordnerstruktur als verwenden immer gehalten Unit-Tests in getrennten Baugruppen recomended von jasmine

hier ist eine link zeigt Standardstruktur von jasmine

+2

hmm .. diese Ordnerstruktur will die Lib-Spezifikation und am wichtigsten src-Ordner auf der gleichen Ebene .. in größeren Projekten, wo Tests in der Regel aus src getrennt sind, kann das ein wenig verwirrend für die Tester oder andere Teammitglieder sein. –

1

Traditionell ich habe.

Ich habe beide Seiten des Arguments gelesen und ziehe es vor, keinen Code zu senden, der kein Produktionscode ist, oder zusätzliche Implementierungsschritte zu haben, um Tests aus dem Produktionscode zu entfernen.

Um auf Javascript in meiner Web.Client.Tests-Assembly zu verweisen, verwende ich beispielsweise ein Post-Build-Ereignis, um die Dateien in das Testprojekt zu kopieren. Dazu verwende ich Robocopy - es ist etwas wie folgt aussieht:

 
robocopy "$(ProjectDir)app" "$(SolutionDir)Tests\Presentation\Web.Client.Tests\app" /E /COPY:D /IS 

robocopy "$(ProjectDir)Scripts" "$(SolutionDir)Tests\Presentation\Web.Client.Tests\Scripts" /E /COPY:D /IS 

if errorlevel 1 GOTO :eof 

Der Haupt con mit diesem Ansatz ist, dass Sie das Projekt jedes Mal zu bauen, wie Sie mit Ihrem C# -Code haben würden, zu aktualisieren, die Testen Sie das Projekt, bevor Sie die Tests ausführen.