Functioneel testen in Java™
Meer informatie over het schrijven van functionele Java™-tests voor AEM as a Cloud Service
Aan de slag met functionele tests getting-started-functional-tests
Nadat u een nieuwe gegevensopslagruimte voor code hebt gemaakt in Cloud Manager, wordt er automatisch een map it.tests gemaakt met voorbeelden van testgevallen.
it.tests omslagen werd gecreeerd, kunt u de recentste versie ook produceren gebruikend het Archetype van het Project van AEM .Als u de inhoud van de map it.tests hebt, kunt u deze gebruiken als basis voor uw eigen tests en vervolgens:
- ontwikkelt uw testgevallen .
- stel de tests plaatselijk in werking .
- Leg uw code vast in de Cloud Manager-opslagplaats en voer een Cloud Manager-pijplijn uit.
Aangepaste functionele tests schrijven writing-functional-tests
Dezelfde tools die Adobe gebruikt om functionele tests voor producten te schrijven, kunnen worden gebruikt om aangepaste functionele tests te schrijven. Gebruik de product functionele tests in GitHub als voorbeeld van hoe te om uw tests te schrijven.
De code voor aangepaste functionele test is Java™-code in de map it.tests van uw project. Het moet één JAR met alle functionele tests produceren. Als de build meer dan één testJAR produceert, is de geselecteerde JAR niet-deterministisch. Als er nultestJAR's worden geproduceerd, gaat de teststap standaard over. Zie Archetype van het Project van AEM voor steekproeftests.
De tests worden uitgevoerd op testinfrastructuren die door Adobe worden onderhouden, waaronder ten minste twee auteur-instanties, twee publiceer-instanties en een Dispatcher-configuratie. Dit betekent dat uw aangepaste functionele tests worden uitgevoerd op de hele AEM-stapel.
Structuur van functionele tests functional-tests-structure
Aangepaste functionele tests moeten worden verpakt als een afzonderlijk JAR-bestand dat door dezelfde Maven-build wordt geproduceerd als de artefacten die in AEM worden geïmplementeerd. Over het algemeen zou deze build een aparte module Maven zijn. Het resulterende JAR-bestand moet alle vereiste afhankelijkheden bevatten en wordt doorgaans gemaakt met de maven-assembly-plugin met behulp van de jar-with-dependencies -descriptor.
Daarnaast moet voor de JAR de header Cloud-Manager-TestType manifest zijn ingesteld op integration-test .
Hier volgt een voorbeeldconfiguratie voor de 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>
In dit JAR-bestand moeten de klassenamen van de tests die daadwerkelijk moeten worden uitgevoerd, eindigen in IT .
Een klasse met de naam com.myco.tests.aem.it.ExampleIT wordt bijvoorbeeld uitgevoerd, maar een klasse met de naam com.myco.tests.aem.it.ExampleTest niet.
Bovendien moet de testcode zich onder een pakket met de naam it bevinden om testcode uit te sluiten van de dekkingscontrole van de codescanfunctie (het filter voor dekkingsuitsluiting is **/it/**/*.java ).
De testklassen moeten normale JUnit-tests zijn. De testinfrastructuur is zodanig ontworpen en geconfigureerd dat deze compatibel is met de conventies die worden gebruikt in de testbibliotheek van aem-testing-clients . Ontwikkelaars worden aangeraden deze bibliotheek te gebruiken en de beste praktijken ervan te volgen.
Zie aem-testing-clients reactie GitHub voor meer details.
Vereisten prerequisites
- De tests in Cloud Manager worden uitgevoerd met een technische admin-gebruiker.
- De containerinfrastructuur die is bestemd voor functionele tests, wordt beperkt door de volgende grenzen:
Afhankelijkheden
- aem-cloud-testing-clients:
De aanstaande veranderingen in de containerized infrastructuur voor het uitvoeren van functionele tests vereisen het bijwerken van aem-wolk-test-cliënten bibliotheek in uw douane functionele tests aan versie 1.2.1 of hoger. Zorg ervoor dat de afhankelijkheid in het it.tests/pom.xml -bestand overeenkomstig wordt bijgewerkt.
<dependency>
<groupId>com.adobe.cq</groupId>
<artifactId>aem-cloud-testing-clients</artifactId>
<version>1.2.1</version>
</dependency>
Als u er niet in slaagt de afhankelijkheidsbibliotheek bij te werken, kan dit leiden tot mislukte pijplijnen bij de stap Aangepast functioneel testen.
Uitvoering lokale test local-test-execution
Alvorens functionele tests in een pijpleiding van Cloud Manager te activeren, wordt het geadviseerd om de functionele tests plaatselijk in werking te stellen gebruikend AEM as a Cloud Service SDK of een daadwerkelijke instantie van AEM as a Cloud Service.
Het lopen in winde running-in-an-ide
Omdat testklassen JUnit-tests zijn, kunnen ze worden uitgevoerd vanuit mainstream Java ™ IDE's zoals Eclipse, IntelliJ en NetBeans. Omdat zowel de functionele tests van het product als de douane functionele tests op de zelfde technologie gebaseerd zijn, kunnen allebei plaatselijk worden in werking gesteld door de producttests in uw douanetests te kopiëren.
Wanneer u deze tests uitvoert, moet u echter verschillende systeemeigenschappen instellen die door de bibliotheek aem-testing-clients (en de onderliggende testclients) worden verwacht.
De systeemeigenschappen zijn als volgt.
sling.it.instances2 .2sling.it.instance.url.1http://localhost:4502sling.it.instance.runmode.1author .authorsling.it.instance.adminUser.1adminsling.it.instance.adminPassword.1sling.it.instance.url.2http://localhost:4503sling.it.instance.runmode.2publish .publishsling.it.instance.adminUser.2adminsling.it.instance.adminPassword.2Alle tests uitvoeren met Maven using-maven
-
Open een shell en navigeer naar de
it.testsmap in uw repository. -
Voer het volgende bevel uit die de noodzakelijke parameters verstrekken om de tests te beginnen gebruikend 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>