엔드 투 엔드(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")); }
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'); }); });
이 가이드는 Java 및 React 애플리케이션을 위한 강력한 E2E 테스트 프레임워크를 설정합니다. 특정 부분을 구현하는 데 도움이 필요하면 알려주세요!
위 내용은 Java React 애플리케이션에 대한 엔드투엔드 테스트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!