Die TAA-spezifische Erweiterung für Visual Studio bietet Unterstützung für die Bearbeitung und den Test der Implementierung von TAA-Modulen auf Basis von mit ExpEdge erzeugten Assemblies.
Die hier beschriebene Funktionalität steht nur zur Verfügung, wenn eine Source-Datei bearbeitet wird, die ein TAA-Modul in C# auf Basis einer ExpEdge-erzeugten Assembly implementiert.
Wenn das Package installiert ist, enthält Visual Studio einen Eintrag „TAA“ in der Menüleiste (bis VS2017) oder unterhalb des Menüs „Extensions“ (ab VS2019). Unterhalb dieses Eintrags werden Funktionen angeboten, um die Implementierung von Modulen zu unterstützen:
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird der Name des Objekts, auf das sich der Menüeintrag bezieht, im Menüeintrag angezeigt, sofern er aus dem aktuellen Kontext abgeleitet werden kann. Funktionen, für die ein Kontext zwingend erforderlich ist, sind deaktiviert, wenn kein Kontext ermittelt werden kann.
Diese Menüeintrage werden nachfolgend beschrieben.
Menu-Eintrag: Modul starten …
Tastatur-Shortcut: Shift+Alt+F5
Diese Funktion startet in einem separaten Prozess tstDo mit den Argumenten zur Ausführung des Moduls, in dessen Implementierung sich der Cursor aktuell befindet.
Wenn erkennbar ist, dass sich der Cursor in einer Methode befindet, die eine bestimmte Operation implementiert, wird diese Operation in den Modulaufruf mit aufgenommen.
Die Argumente können über den angezeigten Dialog ergänzt werden:
Die Argumente, die für einen Modulaufruf angegeben werden, werden - ggf. pro Operation - intern gespeichert und stehen wieder zur Verfügung, wenn dasselbe Modul auf diesem Weg erneut ausgeführt werden soll.
Als Implementierungstyp wird - abhängig von den Projekteigenschaften - „dllClr“ oder „exeClr“ angegeben, die Ispc-Angabe verwendet den Namen der in dem aktuellen Projekt erzeugten Assembly.
Angaben in dem Dialog:
Nähere Information zu den Aufrufoptionen, z.B. bzgl. Aufzeichnung und Schnittstelle, finden Sie in der Syntaxbeschreibung von tstDo.
Beispiel: Die aus dem o.g. Dialog erstellte tstdo-Anweisung:
start TWONLY EFUN PG-NFUN-ROLETEST LOESCHEN -ityp: DllClr -ispc: "D:\WORK\test\TestCS\TestCS\bin\TestCS.DLL;TestCS.MyPgNfunRoletest;Execute" save=D:\WORK\test\tmi\PG-NFUN-ROLETEST_LOESCHEN.tmi -m PGNFUNROLETEST -im1 -z0 -preview 1 -postview 0
Auch Einstiegsbausteine können über die zuvor beschriebene Funktionalität gestartet werden, allerdings können hier keine Optionen (wie Aufzeichnung, Config-Unit, Timestampoffset, Preview usw.) übergeben werden, da TAA vor dem Start des Moduls nicht aktiv ist.
Einige dieser Angaben können aber als Property an dem Ntry-Modul gesetzt werden; die fehlende Möglichkeit für Preview und Postview kann in der Testphase durch ShowModule ersetzt werden:
class MyNtry2 : Ntry2 { public MyNtry2() { this.Recording = "NtryAufzeichnung2"; this.TimestampOffset = "0002-00-00-00.00.00.000000"; this.Title = "Einstieg mit Ntry2"; this.ConfigUnit = "tw_903"; } protected override void RunImplementation() { this.Services.Debug.ShowModule(); MessageBox.Show("Hello World!"); } }
Dieser Befehl ermöglicht es, die Ausführung der aktuellen Implementierung eines Moduls mit einer aufgezeichneten Ausführung zu vergleichen3).
Der Befehl steht nur zur Verfügung, wenn eine Operation ausgewählt ist.
Der „Start“-Knopf startet die Ausführung, wobei zunächst über tstDo das Modul in der aktuellen Implementierung ausgeführt wird, basierend auf der angegebenen Aufzeichnung. Wenn mehrere Instanzen verglichen werden sollen, geschieht die Ausführung in einem einzigen tstDo-Befehl mit Multithreading.
Anschließend wird pro Modulinstanz über tstDiff.exe ein Vergleichsprotokoll erstellt und ggf. angezeigt.
Da dies u.U. länger dauert, wird der Fortschritt in einem Fortschrittsdialog angezeigt; dort kann der Vorhang auch abgebrochen werden:
Der Menü-Eintrag Debug-Einstellungen für <Modul> aktivieren… zeigt an, ob in der Registry für dieses Modul Debug-Einstellungen vorhanden sind.
Wenn der Eintrag angehakt ist, also Einstellungen vorhanden sind, bewirkt ein Klick auf den Menüeintrag, dass ein Dialog geöffnet wird, in diesem die Debug-Einstellungen in der Registry deaktiviert / aktiviert und DebugBreak
gesetzt werden können.
Wenn in der Registry noch keine Debug-Einstellungen für das Modul existieren, bewirkt das Aktivieren (ohne DebugBreak), dass Debug-Einstellungen für den Implementierungstyp „VsNet“ erzeugt werden. Damit können die Module unter Kontrolle von Visual Studio ausgeführt werden.
Wenn DebugBreak
ausgewählt ist, werden Ityp und Ispc gelöscht und nur DebugBreak auf 1 gesetzt.
Wenn die aktivierten Debug-Einstellungen den Ityp „VsNet“ haben, werden im aktuellen Projekt StartProgram und StartArguments bestückt.
VSNet-Debugging für <Modul> Aktiv… – öffnet besagten Dialog. Bei Deaktiveren werden die Werte für Ityp, Ispc und DebugBreak entfernt. Außerdem werden im aktuellen Projekt die Inhalte von StartProgram und StartArguments geleert, sofern dort Debug-Angaben für das aktuelle Modul stehen.
Menu-Eintrag: TAA Tools → Debugeinstellungen [<Name>] anpassen…
Dieser Befehl startet das Tool „TwkEdge“, mit dem Sie die Debug-Angaben bearbeiten können.
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird TwkEdge gestartet und werden die Einstellungen für dieses Modul geladen; der Name des Moduls zu der aktuellen Klasse wird im Menu-Eintrag angezeigt.
Kann kein aktueller Kontext ermittelt werden, wird TwkEdge ohne Angabe eines Moduls gestartet.
Dieser Befehl ermöglicht es, die mit der Testunterstützung attributierten Methoden der aktuellen Implementierung eines Moduls auszuführen4).
Menu-Eintrag: TAA Tools → TAA Explorer Starten…
Dieser Befehl startet das Tool „TaaExplorer“, mit den gleichen Berechtigungen wie das Visual Studio, von dem es aufgerufen wurde.
Menu-Eintrag: TAA Tools → Modulschnittstelle [<Name>] bearbeiten …
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird TeamWiSE.InterfEdge gestartet und dieses Modul dort angezeigt; der Name des Moduls zu der aktuellen Klasse wird im Menu-Eintrag angezeigt.
Kann kein aktueller Kontext ermittelt werden, wird InterfEdge gestartet, ohne dass ein Modul geladen wird.
Sie können in InterfEdge wie gewohnt arbeiten, d.h. auch andere Module laden und - falls Sie Schreibberechtigung für das betreffende Modul haben - Änderungen vornehmen.
Wenn sie von Visual Studio aus für mehrere Module „Modulschnittstelle <name> bearbeiten…“ auswählen, werden diese in derselben Instanz von InterfEdge hinzugefügt.
Menu-Eintrag: Transformation für Modul starten…5)
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird für dieses Modul KonfigDialog gestartet.
Das Verhalten ist so wie auch in InterfEdge usw.: Nach Ausführung der Transformation über Konfig-Dialog erscheint eine Meldungsbox mit dem Namen der Datei, in der das Transformationslog zu finden ist, und der Möglichkeit, diese Datei direkt anzuzeigen.
Menu-Eintrag: Transformation für BasisAssembly starten…6)
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, und die Basis-Assembly unter Angabe einer DV-Komponente erstellt wurde, wird für die diese DV_Komponente die KonfigDialog gestartet.
Das Verhalten ist so wie auch z.B. von Rochade aus: Nach Ausführung der Transformation über Konfig-Dialog erscheint eine Meldungsbox mit dem Namen der Datei, in der das Transformationslog zu finden ist, und der Möglichkeit, diese Datei direkt anzuzeigen.
Menu-Eintrag: Datenstruktur bearbeiten …
Dieser Menüeintrag startet DataStrEdge.
Menu-Eintrag: Schlüsseltabelle bearbeiten …
Dieser Menüeintrag startet TablEdge.
Menu-Eintrag: Meldungsgruppe bearbeiten …
Dieser Menüeintrag startet MessEdge
Menu-Eintrag: Laufzeitinformation anzeigen…
Dieser Menüeintrag startet ReflEdge
Menu-Eintrag: Steuerungsabläufe bearbeiten …
Dieser Menüeintrag startet ControlEdge
Menu-Eintrag: CTV-Module bearbeiten …
Dieser Menüeintrag startet Knowledge
Menu-Eintrag: Interaktionen bearbeiten …
Dieser Menüeintrag startet das Tool „DialogEdge“.
Menu-Eintrag: Testfällebearbeiten …
Dieser Menüeintrag startet Testunterstützung.
Menu-Eintrag: Plausibilitätsregel bearbeiten …
Dieser Menüeintrag startet das Tool „PlEdge“.
Menu-Eintrag: Webservice bearbeiten …
Dieser Menüeintrag startet das Tool „PublEdge“.
Menu-Eintrag: PkEdge starten…
Dieser Menüeintrag startet das Tool „PkEdge“.
Menu-Eintrag: Rochade → Modul bearbeiten …
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, wird Rochade Autopilot gestartet und dieses Modul dort angezeigt.
Leider ist es nicht möglich, in einer bereits laufenden Autopilot-Instanz zu einem Modul zu verzweigen. Deshalb wird für diesen Befehl jedesmal eine neue Autopilot-Instanz gestartet.
Menu-Eintrag: Rochade → DV_Komponente bearbeiten …
Wenn sich der Cursor in einer Klasse befindet, die ein TAA-Modul implementiert, und die Basis-Assembly unter Angabe einer DV-Komponente erstellt wurde, wird Rochade Autopilot gestartet und diese DV_Komponente dort angezeigt.
Leider ist es nicht möglich, in einer bereits laufenden Autopilot-Instanz zu einem Modul zu verzweigen. Deshalb wird für diesen Befehl jedesmal eine neue Autopilot-Instanz gestartet.
Menu-Eintrag: Rochade → Datenstruktur bearbeiten …
Diese Funktionalität ist noch nicht implementiert.
Menu-Eintrag: Rochade → Schlüsseltabelle bearbeiten …
Diese Funktionalität ist noch nicht implementiert.
Menu-Eintrag: Rochade → Meldungsgruppe bearbeiten …
Diese Funktionalität ist noch nicht implementiert.
Wenn für das Package ein neuer Stand zur Verfügung gestellt wird, stellt Visual Studio dies beim Starten (anhand der Versionsnummer) fest und zeigt dies durch eine Meldung an:
Bestätigen Sie diese Meldung mit OK, um den aktuellen Stand zu installierten. Damit dieser aktiv wird, müssen Sie danach Visual Studio beenden und neu starten.
Wenn in dem sog. „About“-Box von Visual Studio7) nachgeschaut wird, sieht man nur die Hauptversion des Pakets:
Schaut man stattdessen bei den installierten Extensions nach8), sieht man die tatsächliche Build
-Version:
Um Module, Datenstrukturen usw. in Rochade Autopilot anzuzeigen, wird zum Starten von Autopilot der Pfad der ausführbaren Datei sowie eine INI-Datei benötigt. Diese können über die Company-Settings RoAutopilot, RoAutopilotSection und RoAutopilotIniFile angegeben werden.
Um im Fehlerfall mehr Informationen von TaaVsPackEdge zu erhalten, kann unter Tools TAAVsPackEdge, das Verbosity-Level gesetzt werden. Die Informationen werden dann in %Temp%TaaVsPackEdgelog.xml geschrieben 9).
Ab TAA-Version 9.10 ist TaaVsPackEdge nicht mehr Teil der ausgelieferten Dateien.
Zur Erstinstallation kann die aktuelle Version der Extension herunter geladen werden.
Durch Klicken auf „Öffnen“ wird die Installation gestartet.
Anschließend auf „Install“ klicken.