エンドツーエンド (E2E) テストでは、バックエンド (Java) とフロントエンド (React) にわたる実際のユーザーのワークフローをシミュレートすることで、アプリケーションが全体として動作することを確認します。このガイドでは、E2E テストを実装するためのツール、セットアップ、手順について説明します。
Java-React スタックでの E2E テストの場合は、バックエンドとフロントエンドの両方と対話できるツールを使用します。
フロントエンド テスト ツール:
バックエンド テスト ツール:
統合ツール:
例 (API の REST 保証テスト):
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")); } }
外部依存関係のモック:
バックエンドのコンテナ化:
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('POST', '/api/login', { statusCode: 200, body: { token: 'fake-token' } });
バックエンド テスト:
given() .contentType("application/json") .body("{ \"username\": \"admin\", \"password\": \"password123\" }") .when() .post("/login") .then() .statusCode(200) .body("token", notNullValue());
フロントエンド テスト:
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")); } }
FROM openjdk:11 COPY target/myapp.jar /app/myapp.jar ENTRYPOINT ["java", "-jar", "/app/myapp.jar"]
CI のバックエンド テスト:
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'); }); });
完全統合:
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());
Java の魅力:
@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")); }
サイプレス ダッシュボード:
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'); }); });
このガイドでは、Java および React アプリケーション用の堅牢な E2E テスト フレームワークをセットアップします。特定の部分の実装にサポートが必要な場合はお知らせください。
以上がJava React アプリケーションのエンドツーエンドのテストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。