了解如何針對 AEM as a Cloud Service 編寫 Java™ 功能測試
在 Cloud Manager 中建立新程式碼存放庫後,系婌將自動建立一個包含範例測試案例的 it.tests
資料夾。
如果您的存放庫是在 Cloud Manager 自動建立 it.tests
資料夾之前所建立,您還可以使用 AEM 專案原型產生最新版本。
獲得 it.tests
資料夾的內容後,您可以將其用作自己測試的基礎,然後:
Adobe 用於編寫產品功能測試的工具也可用於編寫您的自訂功能測試。使用 GitHub 中的產品功能測試作為寫入測試的範例。
自訂功能測試的程式碼是位於專案 it.tests
資料夾中的 Java™ 程式碼。它應該產生一個包含所有功能測試的 JAR。如果建置產生多個測試 JAR,則無法確定要選擇哪個 JAR。如果產生零個測試 JAR,則測試步驟預設透過。如需測試範例,請參閱 AEM 專案原型。
這些測試會在 Adobe 維護的測試基礎結構上執行,包括至少兩個編寫執行個體、兩個發佈執行個體和一個 Dispatcher 設定。此設定代表您的自訂功能測試針對整個 AEM 堆疊執行。
自訂功能測試必須封裝為單獨的 JAR 檔案,該檔案由與要部署到 AEM 的成品相同的 Maven 組建產生。通常,此組建是一個單獨的 Maven 模組。產生的 JAR 檔案必須包含所有必要的相依性,通常使用 maven-assembly-plugin
和 jar-with-dependencies
描述項建立。
此外,JAR 必須將 Cloud-Manager-TestType
資訊清單標頭設為 integration-test
。
以下為 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>
在這個 JAR 檔案中,要執行的實際測試的類別名稱必須以 IT
結尾。
例如,將執行名為 com.myco.tests.aem.it.ExampleIT
的類別,但不會執行名為 com.myco.tests.aem.it.ExampleTest
的類別。
此外,要從程式碼掃描的覆蓋檢查中排除測試程式碼,測試程式碼必須位於名為it
的套件之下 (覆蓋排除篩選是**/it/**/*.java
)。
測試類別必須是一般的 JUnit 測試。測試基礎結構的設計和設定與 aem-testing-clients
測試庫使用的慣例相容。鼓勵開發人員使用此程式庫並遵循其最佳實務。
如需更多詳細資訊,請參閱 aem-testing-clients
GitHub 存放庫。
觀看此影片,了解如何使用自訂功能測試來提高您對 CI/CD 管道的信心。
若要從本機電腦執行功能測試,請建立一個具備類似管理員權限的使用者來達到相同的行為。
類型 | 值 | 說明 |
---|---|---|
CPU | 0.5 | 每次測試執行保留的 CPU 時間量 |
記憶體 | 0.5Gi | 分配給測試的記憶體數量,其值以 GiB 為單位 |
逾時 | 30m | 測試持續時間。 |
建議的持續時間 | 15m | Adobe 建議所編寫的測試不應花費超過這個時間。 |
如果您需要更多資源,請建立客戶服務案例並描述您的使用案例。Adobe 團隊會檢閱您的要求並提供適當的幫助。
在 Cloud Manager 管道啟用功能測試之前,建議在本機使用 AEM as a Cloud Service SDK 或實際的 AEM as a Cloud Service 執行個體中執行功能測試。
由於測試類別是 JUnit 測試,所以它們可以從主流的 Java™ IDE (如 Eclipse、IntelliJ 和 NetBeans) 執行。因為產品功能測試和自訂功能測試都基於相同的技術,所以兩者都可以透過將產品測試複製到自訂測試中,以在本機執行。
但是,在執行這些測試時,需要設定 aem-testing-clients
(和底層 Sling 測試用戶端) 程式庫應有的各種系統屬性。
系統屬性如下。
屬性 | 說明 | 範例 |
---|---|---|
sling.it.instances |
用於符合雲端服務的執行個體數量應設定為 2 |
2 |
sling.it.instance.url.1 |
應設定為編寫 URL | 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 |
應設定為發佈 URL | http://localhost:4503 |
sling.it.instance.runmode.2 |
第二個執行個體的執行模式,應設定為 publish |
publish |
sling.it.instance.adminUser.2 |
應設定為發佈管理員使用者。 | admin |
sling.it.instance.adminPassword.2 |
應設定為發佈管理員密碼。 |
打開 shell 並瀏覽至存放庫中的 it.tests
資料夾。
執行以下命令,提供必要的參數以使用 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>