Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Administrator
Community-Fossil
Gerade im Zusammenhang mit Unity müsste ich aber noch ein paar Dinge nachschauen, wie bspw. den Zeitpunkt und die Bedingung des injezierens und ob diese Frameworks automatisch neu erstellte GameObjects berücksichtigen. Letzteres kann durch dynamische Generierung und durch additives Laden auftreten.
Und es wäre natürlich gut zu wissen, wie gut es sich mit den Unity Test Tools kombinieren lässt, sodass während des Tests beispielsweise Testimplementierung verwendet werden.
Ich konnte mir schon denken, dass man eben solche Umwege gehen muss, damit die Abhängigkeiten ordentlich injeziert werden können. Insgesamt werde ich es mir aber dennoch selbst ansehen müssen, um zu sehen, wie genau ich das in den Vortrag integrieren könnte.Gerade im Zusammenhang mit Unity müsste ich aber noch ein paar Dinge nachschauen, wie bspw. den Zeitpunkt und die Bedingung des injezierens und ob diese Frameworks automatisch neu erstellte GameObjects berücksichtigen. Letzteres kann durch dynamische Generierung und durch additives Laden auftreten.
Ich habe bisher nur mit Zenject Erfahrung gesammelt. Da ist es so, dass es vom Framework eigene Funktionen zum Erzeugen von GameObjects und dem Laden von Szenen (auch additiv) gibt, die dafür sorgen das auch direkt die Abhängigkeiten aufgelöst werden. Das Laden von Szenen ist allerdings ein Sonderfall, da Unity selber die Objekte erzeugt und deswegen keine Constructor injection möglich ist. Es werden nachträglich Properties injected und anschließend mit PostInject annotierte Funktionen aufgerufen.
Und die Unity Test Tools machen nichts anderes, als eine Oberfläche für die automatisierten Tests zu liefern. Man kann darüber alle oder nur bestimmte Unit-Tests ausführen lassen und sich in einer Liste ansehen, welche erfolgreich waren und welche fehlschlugen. Soweit ich weiß kann man diese Ausführung auch automatisch zu bestimmten Ereignissen anstoßen lassen, wie bspw. vor dem Bauen des Projekts. In der Hinsicht bin ich mir aber nicht sicher, dafür habe ich diese Tools dann doch zu wenig verwendet...
Und es wäre natürlich gut zu wissen, wie gut es sich mit den Unity Test Tools kombinieren lässt, sodass während des Tests beispielsweise Testimplementierung verwendet werden.
In Zenject sollte das möglich sein. Man hat ein CompositionRoot Objekt in der (Haupt-)Szene, in dem die Bindings konfiguriert werden etc. und man könnte für die Testszenen dort eine andere Konfiguration wählen. Ich habe mich aber mit den Unity Testtools nicht allzu lang beschäftigt, da für den Prototyp den ich gebaut hatte eher wenig Abhängigkeiten zwischen verschiedenen Objekten bestand und mir da der Aufwand des Testaufbaus zu hoch vor kam. Ich habe die Logik einfach in normale Klassen (keine MonoBehaviours) ausgelagert und sie per Unittests abgedeckt.
Werbeanzeige