Java™ Functional Testing
Lär dig skriva Java™-funktionstester för AEM as a Cloud Service
Komma igång med funktionstester getting-started-functional-tests
När en ny koddatabas skapas i Cloud Manager skapas en it.tests
-mapp automatiskt med exempeltestfall.
it.tests
-mappar kan du även generera den senaste versionen med AEM Project Archetype.När du har innehållet i mappen it.tests
kan du använda den som grund för dina egna tester och sedan:
- Utveckla dina testfall.
- Kör testerna lokalt.
- Implementera koden i Cloud Manager-databasen och kör en Cloud Manager-pipeline.
Skriva anpassade funktionstester writing-functional-tests
Samma verktyg som Adobe använder för att skriva produktfunktionstester kan användas för att skriva dina anpassade funktionstester. Använd produktfunktionstesterna i GitHub som exempel på hur du skriver dina tester.
Koden för det anpassade funktionstestet är Java™-kod i mappen it.tests
i ditt projekt. Den ska producera en enda JAR med alla funktionstester. Om bygget skapar mer än en test-JAR är den JAR som är vald icke-deterministisk. Om inga JAR-testversioner skapas godkänns teststeget som standard. Se AEM Project Archetype för exempel på tester.
Testerna körs på testinfrastruktur som underhålls av Adobe, inklusive minst två författarinstanser, två publiceringsinstanser och en Dispatcher-konfiguration. Detta innebär att dina anpassade funktionstester körs mot hela AEM.
Struktur för funktionstester functional-tests-structure
Anpassade funktionstester måste paketeras som en separat JAR-fil som skapas av samma Maven-bygge som de artefakter som ska distribueras till AEM. I allmänhet är detta bygge en separat Maven-modul. Den resulterande JAR-filen måste innehålla alla nödvändiga beroenden och skulle vanligtvis skapas med maven-assembly-plugin
med hjälp av jar-with-dependencies
-beskrivningen.
Dessutom måste JAR ha Cloud-Manager-TestType
-manifesthuvudet inställt på integration-test
.
Följande är ett exempel på konfiguration för maven-assembly-plugin
.
<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>
I den här JAR-filen måste klassnamnen för de faktiska test som ska köras sluta med IT
.
En klass med namnet com.myco.tests.aem.it.ExampleIT
skulle till exempel köras, men inte en klass med namnet com.myco.tests.aem.it.ExampleTest
.
Om du vill utesluta testkod från disponeringskontrollen för kodskanningen måste testkoden dessutom finnas under ett paket med namnet it
(disponeringsfiltret är **/it/**/*.java
).
Testklasserna ska vara normala JUnit-tester. Testinfrastrukturen är utformad och konfigurerad för att vara kompatibel med konventionerna som används av testbiblioteket aem-testing-clients
. Utvecklare uppmuntras att använda det här biblioteket och följa sina bästa rutiner.
Mer information finns i aem-testing-clients
GitHub-repo.
Förutsättningar prerequisites
- Testerna i Cloud Manager körs med en teknisk administratörsanvändare.
- Den inneslutna infrastruktur som omfattar funktionstestning begränsas av följande gränser:
Beroenden
- aem-cloud-testing-clients:
Kommande ändringar av den inneslutna infrastrukturen för att köra funktionstester kräver att biblioteket aem-cloud-testing-clients i dina anpassade funktionstester uppdateras till version 1.2.1 eller senare. Se till att beroendet i din it.tests/pom.xml
-fil uppdateras i enlighet med detta.
<dependency>
<groupId>com.adobe.cq</groupId>
<artifactId>aem-cloud-testing-clients</artifactId>
<version>1.2.1</version>
</dependency>
Om du inte uppdaterar beroendebiblioteket kan det leda till att pipeline misslyckas i steget"Custom Functional Testing".
Lokal testkörning local-test-execution
Innan du aktiverar funktionstester i en Cloud Manager-pipeline bör du köra funktionstester lokalt med AEM as a Cloud Service SDK eller en faktisk AEM as a Cloud Service-instans.
Köra i en IDE running-in-an-ide
Eftersom testklasser är JUnit-tester kan de köras från vanliga Java ™ -IDE:er som Eclipse, IntelliJ och NetBeans. Eftersom både produktfunktionstester och anpassade funktionstester baseras på samma teknik, kan båda köras lokalt genom att produkttesterna kopieras till dina anpassade tester.
När du kör dessa tester måste du dock ange olika systemegenskaper som förväntas av biblioteket aem-testing-clients
(och det underliggande Sling Testing Clients).
Systemegenskaperna är följande.
sling.it.instances
2
.2
sling.it.instance.url.1
http://localhost:4502
sling.it.instance.runmode.1
author
.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
.publish
sling.it.instance.adminUser.2
admin
sling.it.instance.adminPassword.2
Köra alla tester med Maven using-maven
-
Öppna ett skal och navigera till mappen
it.tests
i din databas. -
Kör följande kommando med de parametrar som krävs för att starta testerna med Maven.
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>