Java React 應用程式的端對端測試
Java 和 React 應用程式的端到端 (E2E) 測試:完整指南
端到端(E2E)測試透過模擬後端(Java)和前端(React)的真實使用者工作流程來確保您的應用程式作為一個整體運行。本指南涵蓋了實施 E2E 測試的工具、設定和步驟。
1.選出正確的工具
對於 Java-React 堆疊中的 E2E 測試,請使用可以與後端和前端互動的工具:
-
前端測試工具:
- Cypress:用於前端測試的現代 E2E 測試工具。
- 劇作家或木偶師:無頭瀏覽器自動化。
- Selenium:適用於前端和後端的瀏覽器自動化。
-
後端測試工具:
- REST Assured:在 Java 中測試 REST API。
- JUnit:後端邏輯的 Java 測試框架。
-
整合工具:
- TestContainers:用於使用 Docker 容器進行測試。
- MockServer:在測試期間模擬 API。
- Allure:用於報告測試結果。
2.設定環境
後端(Java):
-
確保 API 已測試:
- 使用 JUnit 進行單元和整合測試。
- 使用 REST Assured 進行 API 檢定。
範例(API 的 REST Assured 檢定):
import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; public class ApiTest { @Test public void testGetUser() { RestAssured.baseURI = "http://localhost:8080"; given() .when() .get("/users/1") .then() .statusCode(200) .body("name", equalTo("John Doe")); } }
-
模擬外部相依性:
- 使用 MockServer 或 WireMock 來模擬外部 API。
-
容器化後端:
- 使用 Docker 為後端測試建立一致的環境。
- 範例 Dockerfile:
FROM openjdk:11 COPY target/myapp.jar /app/myapp.jar ENTRYPOINT ["java", "-jar", "/app/myapp.jar"]
登入後複製登入後複製
前端(反應):
- 安裝賽普拉斯:
npm install cypress --save-dev
-
建立 Cypress 測驗:
- 範例:測試登入功能:
describe('Login Page', () => { it('should log in successfully', () => { cy.visit('http://localhost:3000/login'); cy.get('input[name="username"]').type('admin'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); }); });
登入後複製登入後複製 -
Cypress 中的類比 API:
- 使用 cy.intercept() 攔截後端 API 呼叫。
cy.intercept('POST', '/api/login', { statusCode: 200, body: { token: 'fake-token' } });
3.寫 E2E 測驗
場景 1:使用者登入工作流程
-
後端檢定:
- 確保 /login API 傳回有效的令牌。
- 範例:
given() .contentType("application/json") .body("{ \"username\": \"admin\", \"password\": \"password123\" }") .when() .post("/login") .then() .statusCode(200) .body("token", notNullValue());
登入後複製登入後複製 -
前端測試:
- 在登入頁面模擬使用者輸入並驗證重定向。
場景 2:建立並顯示項目
-
後端測試:
- 驗證 /createItem API 儲存資料並且 /items API 擷取資料。
import io.restassured.RestAssured; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; public class ApiTest { @Test public void testGetUser() { RestAssured.baseURI = "http://localhost:8080"; given() .when() .get("/users/1") .then() .statusCode(200) .body("name", equalTo("John Doe")); } }
-
前端測試:
- 驗證 UI 顯示已建立的項目。
FROM openjdk:11 COPY target/myapp.jar /app/myapp.jar ENTRYPOINT ["java", "-jar", "/app/myapp.jar"]
4.將端到端測試與 CI/CD 整合
-
CI 中的後端檢定:
- 使用 JUnit 和測試資料庫:
npm install cypress --save-dev
登入後複製登入後複製 -
CI 中的前端測試:
- 運行賽普拉斯測試:
describe('Login Page', () => { it('should log in successfully', () => { cy.visit('http://localhost:3000/login'); cy.get('input[name="username"]').type('admin'); cy.get('input[name="password"]').type('password123'); cy.get('button[type="submit"]').click(); cy.url().should('include', '/dashboard'); }); });
登入後複製登入後複製 -
完全整合:
- 使用 Docker Compose 一起運行後端和前端:
cy.intercept('POST', '/api/login', { statusCode: 200, body: { token: 'fake-token' } });
登入後複製登入後複製 CI 的 GitHub 操作:
given() .contentType("application/json") .body("{ \"username\": \"admin\", \"password\": \"password123\" }") .when() .post("/login") .then() .statusCode(200) .body("token", notNullValue());
5.報告
-
Allure for Java:
- 整合 Allure 以獲得詳細的測試報告:
@Test public void testCreateAndRetrieveItem() { String itemJson = "{ \"name\": \"Test Item\" }"; // Create Item given() .contentType("application/json") .body(itemJson) .post("/createItem") .then() .statusCode(201); // Retrieve Items given() .get("/items") .then() .statusCode(200) .body("[0].name", equalTo("Test Item")); }
登入後複製 -
賽普拉斯儀表板:
- 使用 Cypress 儀表板追蹤測試運行:
describe('Item Management', () => { it('should display the newly created item', () => { cy.visit('http://localhost:3000/items'); cy.get('button#create-item').click(); cy.get('input[name="itemName"]').type('Test Item'); cy.get('button#save-item').click(); cy.contains('Test Item').should('exist'); }); });
登入後複製
6.最佳實務
- 在測試期間模擬外部 API 以避免不穩定。
- 使用專用的測試資料庫進行後端測試。
- 在 CI 中並行測試以節省時間。
- 每次運行後清理測試資料。
本指南為 Java 和 React 應用程式建立了一個強大的 E2E 測試框架。如果您需要幫助實現任何特定部分,請告訴我!
以上是Java React 應用程式的端對端測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本啟動Spring...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...
