Frage

Ich arbeite an einem Allgemeinen code-Bibliothek für ActionScript 3.0 genannt as3lib die enthält mehrere Erweiterungen für die core-API und einige nützliche Funktionen.Ich habe bereits mehrere unit-tests (mit FlexUnit), um sicherzustellen, dass alles ordnungsgemäß funktioniert.

Was ist der beste Weg, um zu organisieren, diese tests in der Bibliothek? Derzeit habe ich alle meine code in src/ und meine tests in test/ aber ich habe eine sekundäre Flex-Projekt zum ausführen der unit-tests.Ich bin auch manuell hinzufügen und entfernen Sie die test-Dateien aus der Bibliothek, wenn ich die tests ausführen möchten.

Was ich Tue, scheint nicht richtig zu.Gibt es einen besseren Weg?Vorzugsweise eine, wo die kompilierte Bibliothek beinhaltet nicht die test-Dateien, aber ich brauche nicht zwei separate Projekte, um Sie zu testen.

War es hilfreich?

Lösung

Die Art, wie wir getan haben diese Dinge in meinem Unternehmen ist, dass wir tatsächlich gehören beide unter der Quell-Verzeichnis, und dann haben wir zwei Anwendung von mxml-Dateien, die wir verwenden.Ist der Test-suite, die alle die entsprechenden links zu unit-test-Klassen, die andere ist die wichtigste Anwendung.Wir haben auch zwei package-Strukturen innerhalb des src-Ordner:eine Paket-Struktur Kom.., und andere tests.com...Stellen Sie sicher, dass ALLE source-code für unit-tests sind IMMER in den tests package -- auf diese Weise können Sie verwenden nur einem SVN ignorieren, und Sie können auch stellen Sie sicher, dass Sie Ihre Prüfungen nicht schaffen abhängigen und hart-codiert, Beziehungen mit anderen Projekten.

Es gibt zwei Möglichkeiten, die wir verwenden, um sicherzustellen, dass die test.com Quelldateien sind nicht enthalten.The automated build system verweist nur auf die Haupt-Anwendung, und seit, dass nur Einfuhren aus com., mxmlc.exe werden nur die Dateien für die Haupt-Anwendung.Beim Bau lokal, innerhalb von eclipse können Sie Steuern, wie die Dinge erstellen, indem Sie auf den kleinen Pfeil neben "Debug" und scrollen Sie zu "Favoriten Organisieren." Wenn Sie auf "Hinzufügen" klicken, Sie sollten in der Lage sein wählen Sie alle root-Ebene .mxml-Dateien, die den Verweis auf das Application-Klasse.Werden sicher zu fügen Sie die Basis-Anwendung und die neue unit-test-Anwendung-Datei.Wenn Sie auf "OK" klicken, den Pfeil, können Sie nun in den debug-entweder als Haupt-Anwendung oder Ihre unit-test-framework.

Als ein beiseite, verwenden wir auch FlexUnit-wie unser Test-framework.Ich mag es.

Andere Tipps

Ich werde hier gegen den Strom schwimmen und schlagen ein anderes Projekt insgesamt für Ihre Tests einrichten. Ich glaube, dass in der Regel ist es nicht wirklich unabhängig davon, wo Sie die Tests setzen, solange es ist konsistent und etwas überschaubar. Aber ich gibt es drei zwingende Gründe für ein separates Projekt für die Tests mit:

  1. Die Trennung von Bedenken. Zuerst Ihrer Bibliothek einen Zweck hat, haben die Tests der anderen. Während die Tests die Bibliothek Funktion benötigt, hat die Bibliothek keine wirkliche Verwendung für die Tests. Hinweis , dass ich nicht sagen Tests sind nutzlos, weit davon entfernt. Die Tests sind es, die Gesundheit der Bibliothek, um zu überprüfen, sondern in einer Produktionsumgebung die Tests dienen keinem Zweck.

  2. Weniger aufblasen, kleinere Dateien. Tests sind nicht immer trivial. Aber selbst wenn sie alle waren, würden sie immer noch mit ausreichend Speicherplatz. Da die Tests nicht ohnehin in einer Produktionsumgebung verwendet werden, ist dies sinnlos. Außerdem zeigten Tests in ein neues Projekt Trennung macht die Dateistruktur viel sauberer.

  3. CI-Umgebungen sind in der Regel saubere einzurichten, wenn die Tests nicht herum.

Während es sicherlich möglich ist, zumindest das zweite Problem mit Compiler-Direktiven zu lösen, ist es unnötige Arbeit, wenn es viel einfacher ist, nur die beiden zu trennen. eine Bibliothek oder das Testen von Anwendungen, die Sie benötigen den gleichen Namensraum (interne Klassen anyone?) zu verwenden, ist auch kein Problem, da die Tests projizieren die Namensräume spiegeln kann. Offensichtlich ist es notwendig, nicht Namenskollisionen in den Namensräumen haben, aber das ist trivial.

In Bezug auf die Flash Builder-Unterstützung ist es große Dinge in zwei Projekten zu trennen. anstelle dem aktuellen im Dialog Projekt, das erscheint alles, was Sie tun müssen, ist einen neuen Test erstellen Rechtsklick, was auch immer Klasse, die Sie Whish zu testen, einen neuen Test erstellen stellen und stellen Sie sicher, Ihre Tests wählen. Das ist wirklich der Hauptgrund, warum ich und meine Teammitglieder Schreiben von Tests eine harte Zeit zu rechtfertigen hatten, als wir in TDD bekam, zu viel Aufwand nur um loszulegen. Mit dem aktuellen Stand des IDE, ist es lächerlich einfach und nützlich.

Wie bei jeder Technik gibt es jedoch Vorbehalte. Zum einen ist es nicht offensichtlich, dass die Tests in einem anderen Projekt sind, es sei denn es dokumentiert ist. die Tests im selben Projekt Mit sortiert effektiv das Problem. Auf der anderen Seite wird dies durch Maven oder andere Abhängigkeitsmanagement-Tool Konfiguration leicht zu lösen Sie in Ihrer Umgebung haben können. Ein weiteres Problem ist, dass, wenn Sie eine Paketstruktur zu tun haben in Ihren Tests, den Spiegel projizieren, dass der Bibliothek oder Anwendung, es gibt einige Wartungsaufwand, diese Strukturen synchronisiert ist. Während kein großes Problem und ganz leicht Scripting gelöst verwenden, es ist noch erwähnenswert.

Wie auch immer, das ist, wie ich es tun.

scroll top