Java™-Funktionsprüfung
Erfahren Sie, wie Sie Java™-Funktionstests für AEM as a Cloud Service schreiben.
Erste Schritte mit Funktionstests getting-started-functional-tests
Nach der Erstellung eines neuen Code-Repositorys in Cloud Manager wird automatisch ein it.tests
-Ordner mit Beispieltestfällen erstellt.
it.tests
-Ordner erstellt hat, können Sie die neueste Version auch mit dem AEM-Projektarchetyp erstellen.Sobald Sie den Inhalt des Ordners it.tests
haben, können Sie ihn als Grundlage für Ihre eigenen Tests verwenden und dann:
- Entwickeln Sie Ihre Testfälle.
- Führen Sie die Tests lokal aus.
- Übertragen Sie Ihren Code in das Cloud Manager-Repository und führen Sie eine Cloud Manager-Pipeline aus.
Schreiben von benutzerdefinierten Funktionstests writing-functional-tests
Mit denselben Tools, die Adobe zum Schreiben von Produktfunktionstests verwendet, können Sie auch benutzerdefinierte Funktionstests schreiben. Verwenden Sie die Produktfunktionstests in GitHub als Beispiel für das Schreiben Ihrer Tests.
Der Code für den benutzerdefinierten Funktionstest ist Java™-Code im Ordner it.tests
Ihres Projekts. Er sollte eine einzige JAR mit allen Funktionstests erstellen. Wenn der Build mehr als eine Test-JAR erzeugt, ist es nicht bestimmbar, welche JAR ausgewählt wird. Wenn keine Test-JARs erzeugt werden, ist der Testschritt standardmäßig bestanden. Beispieltests finden Sie unter AEM Projektarchetyp .
Die Tests werden auf der von Adobe verwalteten Testinfrastruktur ausgeführt, die mindestens zwei Authoring-Instanzen, zwei Publishing-Instanzen und eine Dispatcher-Konfiguration umfasst. Dieses Setup bedeutet, dass Ihre benutzerdefinierten Funktionstests für den gesamten AEM-Stapel ausgeführt werden.
Struktur von Funktionstests functional-tests-structure
Benutzerdefinierte Funktionstests müssen als separate JAR-Datei verpackt werden, die mit demselben Maven-Build erstellt wird wie die Artefakte, die in AEM bereitgestellt werden sollen. Im Allgemeinen ist dieser Build ein separates Maven-Modul. Die resultierende JAR-Datei muss alle erforderlichen Abhängigkeiten enthalten und wird im Allgemeinen mithilfe des maven-assembly-plugin
mit dem Deskriptor jar-with-dependencies
erstellt.
Darüber hinaus muss für die JAR-Datei der Cloud-Manager-TestType
-Manifest-Header auf integration-test
eingestellt sein.
Im Folgenden wird eine Beispielkonfiguration für das maven-assembly-plugin
gezeigt.
<build>
<plugins>
<!-- Create self-contained jar with dependencies -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifestEntries>
<Cloud-Manager-TestType>integration-test</Cloud-Manager-TestType>
</manifestEntries>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Innerhalb dieser JAR-Datei müssen die Klassennamen der tatsächlich auszuführenden Tests in IT
enden.
Beispielsweise würde eine Klasse mit dem Namen com.myco.tests.aem.it.ExampleIT
ausgeführt, eine Klasse mit dem Namen com.myco.tests.aem.it.ExampleTest
jedoch nicht.
Um Test-Code von der Abdeckungsprüfung des Code-Scans auszuschließen, muss der Test-Code unterhalb eines Pakets mit dem Namen it
liegen (der Filter für den Abdeckungsausschluss lautet **/it/**/*.java
).
Die Testklassen müssen normale JUnit-Tests sein. Die Testinfrastruktur ist so konzipiert und konfiguriert, dass sie mit den Konventionen der Testbibliothek von aem-testing-clients
kompatibel ist. Entwicklerinnen und Entwicklern wird dringend empfohlen, diese Bibliothek zu verwenden und ihre Best Practices zu befolgen.
Weitere Informationen finden Sie im aem-testing-clients
GitHub-Repository.
Voraussetzungen prerequisites
- Die Tests in Cloud Manager werden von technischen Admins ausgeführt.
- Die Container-Infrastruktur, die für Funktionstests genutzt wird, ist durch die folgenden Grenzen begrenzt:
Abhängigkeiten
- aem-cloud-testing-clients:
Künftige Änderungen an der containerisierten Infrastruktur für die Ausführung von Funktionstests erfordern die Aktualisierung der Bibliothek aem-cloud-testing-clients in Ihren benutzerdefinierten Funktionstests auf Version 1.2.1 oder höher. Stellen Sie sicher, dass die Abhängigkeit in Ihrer it.tests/pom.xml
-Datei entsprechend aktualisiert wird.
<dependency>
<groupId>com.adobe.cq</groupId>
<artifactId>aem-cloud-testing-clients</artifactId>
<version>1.2.1</version>
</dependency>
Wenn die Abhängigkeitsbibliothek nicht aktualisiert wird, kann es zu Pipeline-Fehlern beim Schritt "Benutzerdefinierte Funktionstests"kommen.
Lokale Testausführung local-test-execution
Vor der Aktivierung von Funktionstests in einer Cloud Manager-Pipeline wird empfohlen, die Funktionstests lokal mit dem AEM as a Cloud Service SDK oder einer tatsächlichen AEM as a Cloud Service-Instanz auszuführen.
Ausführung in einer IDE running-in-an-ide
Da es sich bei Testklassen um JUnit-Tests handelt, können sie von standardmäßigen Java ™-IDEs wie Eclipse, IntelliJ und NetBeans ausgeführt werden. Da sowohl die Produktfunktionstests als auch die benutzerdefinierten Funktionstests auf der gleichen Technologie basieren, können beide lokal ausgeführt werden, indem die Produkttests in die benutzerdefinierten Tests kopiert werden.
Wenn diese Tests ausgeführt werden, müssen jedoch verschiedene Systemeigenschaften festgelegt werden, die von der Bibliothek von aem-testing-clients
(und den zugrundeliegenden Sling Testing Clients) erwartet werden.
Die Systemeigenschaften lauten wie folgt.
sling.it.instances
2
gesetzt werden.2
sling.it.instance.url.1
http://localhost:4502
sling.it.instance.runmode.1
author
setzen.author
sling.it.instance.adminUser.1
admin
sling.it.instance.adminPassword.1
sling.it.instance.url.2
http://localhost:4503
sling.it.instance.runmode.2
publish
setzen.publish
sling.it.instance.adminUser.2
admin
sling.it.instance.adminPassword.2
Ausführen aller Tests mit Maven using-maven
-
Öffnen Sie eine Shell und navigieren Sie zum Ordner
it.tests
in Ihrem Repository. -
Führen Sie den folgenden Befehl aus, indem Sie die erforderlichen Parameter angeben, um die Tests mit Maven zu starten.
mvn verify -Plocal \
-Dit.author.url=https://author-<program-id>-<environment-id>.adobeaemcloud.com \
-Dit.author.user=<user> \
-Dit.author.password=<password> \
-Dit.publish.url=https://publish-<program-id>-<environment-id>.adobeaemcloud.com \
-Dit.publish.user=<user> \
-Dit.publish.password=<password>