Unit-Test-AS3-Code für Flash
Ich versuche meinen code durch das schreiben von unit tests für meine ActionScript-3-code für Flash-Projekte, die ich arbeiten, aber ich habe eine mentale Hürde zu verstehen, wie man sich damit in den Kontext eines Flash-Programm. Ich kann nicht scheinen, um wickeln Sie meinen Kopf herum, wie mit Dingen umgehen, wie addChild und die Bühne, sowie die asynchrone Verarbeitung typisch für Flash-Anwendungen (addEventListeners für das warten auf die Dinge zu laden, etc.). Ist es wirklich anders als jede andere Sprache? Wie wirkt sich ein Entwickler beschäftigen sich mit der einzigartigen Umgebung ein Flash-Programm?
Ein paar Klarstellungen:
- Das hat nichts zu tun mit Flex, ohne Flex ist auf allen beteiligten.
- Programme nur die AS3-code-Dateien und eine FLA-Elemente enthält.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Große Frage. Es ist eine Herausforderung, zu wählen, welche Teile eines Projektes zu testen, eine einzelne Klasse oder Gruppe von Klassen, oder beides.
Obwohl Tests rund um das user interface testen kann, fangen viele Logik-und event-Fehler, die UI ist allgemein, wo viele seltsame Dinge geschehen. Viele Fehler in ein Flash-Projekt kann aufgrund von unerwarteten Benutzer-Interaktion Modi - im Grunde beta-tester etwas tut in der Benutzeroberfläche, die Sie nie gedacht hätte zu tun.
Wenn Ihr Projekt ist getrieben von user-Interaktion, insbesondere Spiel orientiert sich im Gegensatz zu RIA-orientierte Planung, eine gute Reihenfolge der tests ist so wichtig wie die tests selbst. Zum Beispiel, können Sie versuchen, Eine Aktion, dann Aktion B, wohl wissend, dass B hängt von A, weil das ist, wie Sie es geschrieben hat. Ein tester kann versuchen B vor, ein Szenario, das Sie möglicherweise nicht erwartet haben und man würde nicht gefangen werden, wenn A und B wurden getestet als unabhängige Einheiten. Es kann auch bedeuten, Sie würde schreiben wollen, 3 oder 4 Prüfungen: A -, B -, A->B und B->Ein, so dass die Anzahl der Staaten aus der hand.
Etwas zu prüfen, ist ein Test-framework wie Flexunit zu automatisieren vieler Aufgaben.
Edit: ich sollte anmerken, dass FlexUnit-Werke für reines AS3 als gut.
Ich mag Abstraktion der Anwendungslogik von front-end-display Zeug. Ich glaube nicht, dass es ist sehr nützlich, um unit-test-front-end - /display-Zeug, aber Sie können unit-test der internen Logik und Funktionalität des Systems. Es ist das MVC design pattern.
Beispiel: Angenommen, Sie haben ein Flash-Spiel, wo es ein Spieler, die können die Feinde anzugreifen. Haben Sie vielleicht eine Klasse
Player
eine KlasseMonster
ist, und eine MethodePlayer.attack(monster:Monster)
.Ihre unit-tests werden Werte festgelegt, die in einem
Player
undMonster
, und rufen Sieattack()
und dann stellen Sie sicher, dass die Ergebnisse korrekt sind.Ihre front-end-display, die Bühne, anklickbare Objekte, etc. und UI wird auch Aufrufe an diese Objekte gegebenenfalls in einer live-Umgebung.
Die unit-tests ausführen würde, in einer separaten .swf-Datei, die führt tests, die den import der Modell-Objekte (
Player
,Monster
, und was Sie sonst noch haben könnte), sondern völlig ignorieren alle Ihre visual - /Anzeigeelemente. Ich möchte vermeiden, unit-testing, irgendetwas, das Benutzer-Interaktion.