SWT47.2 SWT-Instrumentierung 
                
                      
                Zum Testen von SWT basierten Anwendungen mit QF-Test/swt sind spezielle Maßnahmen erforderlich. Da bei der Entwicklung von SWT die Testbarkeit von Anwendungen nicht berücksichtigt wurde, müssen diese mit leicht modifizierten SWT Klassen gestartet werden, in welchen wir SWT um die nötigen Einstiegspunkte zum Filtern von Events und Auffinden von GUI-Komponenten erweitert haben. Die Änderungen sind transparent, so dass das Verhalten einer Anwendung innerhalb und außerhalb von QF-Test nicht verändert wird.
                            4.5+
        Sind beim Start des SUT der QF-Test Agent und die Option Ohne SWT-Instrumentierung verbinden aktiviert, werden
        die benötigten Klassen beim Laden ohne weiteres Zutun durch den Agent ausgetauscht. Dies funktioniert für alle
        SWT-Versionen unter Windows und für SWT 4.8 und höher unter Linux. Ältere Versionen unter Linux benötigen nach
        wir vor die Instrumentierung wir unten beschrieben. Es ist generell eine gute Idee, den Prozeduraufruf zur
        Instrumentierung in der Startsequenz zu haben und dabei den Parameter forceInstrumentation auf
        false zu setzen. So kann QF-Test abhängig von den Optionen und der SWT-Version entscheiden, ob die
        Instrumentierung notwendig ist.
      
                
Wenn Sie den Schnellstart Wizard von QF-Test zur Erstellung der Startsequenz für Ihr SUT verwenden (siehe Kapitel 3), wird er sich auch um die SWT Instrumentierung kümmern. Für diejenigen unter Ihnen, die nicht so gerne mit Wizards arbeiten, sei nun der händische Weg erklärt.
                            Die Standardbibliothek qfs.qft, die Teil der Distribution von QF-Test ist und
        ausführlich im Tutorial beschrieben wird, enthält im Package
        qfs.swt.instrument eine Prozedur namens setup, um die
        SWT-Instrumentierung durchzuführen. Fügen Sie vor dem Startknoten für Ihr SUT einen
        Prozeduraufruf Knoten ein. Setzen Sie Name der Prozedur auf
        qfs.qft#qfs.swt.instrument.setup und in den Variablendefinitionen den
        Parameter sutdir auf das Installationsverzeichnis Ihrer Anwendung. Der
        Parameter plugin kann leer gelassen werden, es sei denn, Ihre Anwendung folgt
        nicht dem üblichen Layout des Plugin-Verzeichnisses. In diesem Fall können Sie das zu
        instrumentierende Plugin direkt über den plugin Parameter angeben. Das ist
        alles. Für jene, die genau wissen möchten, was hinter den Kulissen abläuft, werden
        nachfolgend in diesem Kapitel die manuellen Schritte zur SWT-Instrumentierung beschrieben.
      
                
                    47.2.1 Vorbereitung einer manuellen SWT-Instrumentierung 
                
                        
                
                              Die für SWT Tests unterstützten Architekturen sind 64 Bit Windows und
          64 Bit Linux mit Gtk. Die benötigten Dateien werden mit QF-Test in den Verzeichnissen
          namens .../qftest-9.0.6/swt/$ARCH/$VERSION bereit gestellt, wobei
          $ARCH entweder win32-64
	  oder linux-gtk-64 ist und $VERSION eine
          der unterstützten SWT-Versionen.
        
                
                              Zunächst müssen Sie herausfinden, ob Ihre Anwendung eine eigenständige SWT-Anwendung ist
          oder auf Eclipse basiert. Werfen Sie dazu einfach einen Blick auf die
          Verzeichnisstruktur Ihrer Anwendung. Wenn Sie ein Verzeichnis namens
          plugins finden, das eine Datei namens
          org.eclipse.swt.win32.win32.x86_X.Y.Z.jar (unter Windows) oder
          org.eclipse.swt.gtk.linux.x86_X.Y.Z.jar (unter Linux) enthält, wobei
          X.Y.Z einer Versionsnummer wie 3.2.0 entspricht, basiert Ihre
          Anwendung auf Eclipse. Bei einer eigenständigen SWT-Anwendung sollten Sie dagegen eine
          Datei namens swt.jar finden, üblicherweise in einem Verzeichnis namens
          lib.
        
                
                    47.2.2 Manuelle SWT-Instrumentierung für Eclipse basierte Anwendungen 
                
                        
                
                              Ersetzen Sie einfach die Datei mit dem SWT Plugin durch ein von QF-Test instrumentiertes
          Plugin. Um dieses zu erstellen, führen Sie einmal die oben beschriebene Prozedur
          qfs.qft#qfs.swt.instrument.setup aus. Geben Sie dabei Ihr original Plugin
          (oder eine Kopie davon) im Parameter plugin an. QF-Test erstellt eine Kopie
          des Originals namens _org.eclipse.swt....jar.orig.
          Kopieren Sie dann die instrumentierte Datei in das plugin Verzeichnis
          Ihrer Anwendung. Die SWT Plugin Dateien enden mit Versionsinformation der Form
          ...X.Y.Z.jar, z.B.
          org.eclipse.swt.win32.win32.x86_3.2.0.jar. Um die entsprechende Datei aus
          QF-Test verwenden zu können, muss der X.Y Teil exakt übereinstimmen. Die
          Unterversion Z muss in der QF-Test Variante größer oder gleich dem Original sein.
        
                
                              Zum Abschluss starten Sie Ihre Anwendung einmal von der Kommandozeile mit dem Argument
          -clean um den Plugin Cache der Anwendung zu aktualisieren:
        
                
eclipse -clean
                              Die Programmdatei Ihrer Anwendung heißt eventuell nicht eclipse, aber
          alle Eclipse basierten Anwendung sollten das Argument -clean unterstützten.
        
                
                    47.2.3 Manuelle Instrumentierung für eigenständige SWT-Anwendungen 
                
                        
                
                              Bei einer eigenständigen SWT-Anwendung ersetzen Sie die Datei swt.jar
          mit der gleichnamigen Datei aus dem oben erwähnten Verzeichnis von QF-Test. Machen Sie
          dabei zunächst eine Sicherheitskopie vom Original.
        
                
                              HinweisWenn die Anwendung über den Java-SUT-Client starten Knoten gestartet wird,
          kann man den Classpath auch auf das entsprechende
          .../qftest-9.0.6/swt/$ARCH/$VERSION/swt.jar Archiv setzen und
          braucht die Originaldatei nicht zu ersetzen.