본문으로 건너뛰기
ElastiCORE 3.0 은 릴리스 후보(RC)입니다: Maven Central 의 3.0.261022-rc1. 2.2 라인 프로젝트는 2.2 문서를 보세요.
버전: 3.0

테스트

생성되는 서비스 테스트​

env.yml 의 testCode: "true" 는 서비스의 JUnit 5 + Mockito 단위 테스트를 생성합니다 - 모든 필드 타입의 샘플 데이터(복합 키 포함)와 CRUD·검색 메서드. src/test/java 의 서비스 패키지에 놓입니다. 접근 규칙이 있는 엔티티는 애플리케이션 자신으로 실행하고(RunAsSystemExtension), 규칙 자체를 시험하는 테스트는 사용자로 로그인해서 씁니다.

HTTP 흐름 테스트​

예제들은 클라이언트가 보는 대로 애플리케이션을 테스트합니다: MockMvc 와 @SpringBootTest, 생성된 엔드포인트로 로그인하고 세션을 유지. Pet Store 의 MetricsTest 에서:

@SpringBootTest
@AutoConfigureMockMvc // Boot 4: org.springframework.boot.webmvc.test.autoconfigure
class MetricsTest {

@Autowired MockMvc mvc;

@Test
void eachMetricIsWhatTheBusinessMeansByIt() throws Exception {
MockHttpSession user = signIn("user", "user");
MockHttpSession admin = signIn("admin", "admin");
String shipped = order(user, 1000, 2);
mvc.perform(post("/api/petstore/purchaseOrder/" + shipped + "/ship").session(admin))
.andExpect(status().isOk());
// ...
}
}

Pet Store 의 테스트가 다루는 것의 예: ShopFlowTest(로그인, 소유자, 거절된 이동의 409, 지울 수 있는 상태, 한국어 메시지, 404·405·415 응답), MetricsTest(내보낸 지표 SQL 을 DB 와 대조), SemanticModelTest(내보낸 모든 컬럼이 있는지).

Spring Boot 4 에서 @AutoConfigureMockMvc 는 org.springframework.boot.webmvc.test.autoconfigure 에 있고 spring-boot-starter-webmvc-test 가 필요합니다.

포트​

  • 포트를 바꿉니다: @MockitoBean CourierApiPort courier;(Spring Boot 3.4 이상) - 성공, 오류 본문, 예외를 돌려주게.
  • @EnableElastiCore 가 붙은 클래스를 띄우는 @SpringBootTest 는 포트 빈을 받습니다(3.0.261022-rc1 부터).
  • httpPort: spring 에서 같은 서버 안의 가짜 컨트롤러를 부르려면 webEnvironment = DEFINED_PORT.

HTTP 포트 참고.

아키텍처 테스트​

env.yml 의 archTest: true 는 <Domain>ArchitectureTest 를 한 번 생성합니다 - 계층에 대한 ArchUnit 규칙: 도메인은 바깥 계층에 의존하지 않음, 애플리케이션은 어댑터·영속성 클래스에 의존하지 않음(포트로만), 도메인은 웹을 모름 (mapping: xml 이면 jakarta.persistence 도 모름). testImplementation 'com.tngtech.archunit:archunit-junit5:1.3.0' 이 필요합니다.

한국어 JVM​

예제들은 테스트를 -Duser.language=ko -Duser.country=KR 로 돌려, Accept-Language 없는 응답이 서버 머신의 언어로 나가지 않는 것을 확인합니다.