μ΄λ² ν¬μ€ν μ ν μ€νΈ μΌμ΄μ€ μμ±νλ λ°©λ²μ νλ €κ³ νλ€.
Test Case μ μ€μμ±μ νμ μμ μ΄μν λ λ°λ‘ κ°λ°νκ²μ μ¬λ¦¬λ κ²μ μμ’μ μ΅κ΄μ΄λ€.
κ·Έλμ νμμ κ²½μ° ν μ€νΈ μΌμ΄μ€κ° μ€μνλ€κ³ μκ°μ΄λ λ€.
μΌλ¨ JPA λ νμ§ν 리μμ λ‘μ§ νλλ₯Ό μΆκ°λ₯Ό ν΄μ€λ€.
@Repository
public interface CustomRepository extends JpaRepository<Custom, CustomPK> {
Optional<List<Custom>> findByContentContaining(String content);
}
@DataJpaTest
: JPA κ΅¬μ± μμ μλ§ μ΄μ μ λ§μΆ JPA ν μ€νΈμ λν μ£Όμμ λλ€.
μ΄ μ£Όμμ μ¬μ©νλ©΄ μ 체 μλ ꡬμ±μ΄ λΉνμ±νλκ³ λμ JPA ν μ€νΈμ κ΄λ ¨λ κ΅¬μ± λ§ μ μ©λ©λλ€.
κΈ°λ³Έμ μΌλ‘ μ£Όμμ΄ λ¬λ¦° ν μ€νΈ @DataJpaTestλ νΈλμμ μ΄λ©° κ° ν μ€νΈκ° λλ λ λ‘€λ°±λ©λλ€. λν λ΄μ₯ λ λ©λͺ¨λ¦¬ λ΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν©λλ€ (λͺ μ μ λλ μΌλ°μ μΌλ‘ μλ ꡬμ±λ DataSource λ체).
@ActiveProfiles
: ActiveProfiles for ν μ€νΈ ν΄λμ€λ₯Ό λ‘λ ν λ μ¬μ©ν΄μΌ νλ νμ± Bean μ μ νλ‘νμΌ μ μ μΈνλ λ° μ¬μ©λλ ν΄λμ€ λ 벨 μ£Όμμ λλ€ ApplicationContext. μ΄ μ£Όμμ λ©ν μ£Όμ μΌλ‘ μ¬μ©λμ΄ μ¬μ©μ μ§μ μμ±λ μ£Όμ μ λ§λ€ μ μμ΅λλ€ .
@ExtendWith
: SpringExtension λ μ€νλ§ 5μ μΆκ°λ JUnit 5μ μ£ΌνΌν°(Jupiter) λͺ¨λΈμμ μ€νλ§ ν μ€νΈμ»¨ν μ€νΈ(TestContext)λ₯Ό μ¬μ©ν μ μλλ‘ ν΄μ€λ€.
@DataJpaTest
@ActiveProfiles("h2")
@ExtendWith(SpringExtension.class)
@DisplayName("컀μ€ν
μν°ν° ν
μ€νΈ")
class CustomRepositoryTest {
@Autowired
private CustomRepository customRepository;
private final String content = "test10000";
@BeforeEach
public void beforeEach() {
Custom dto = Custom.builder()
.customPK(new CustomPK("naver.com", "test@naver.com"))
.content(content)
.build();
customRepository.save(dto);
}
@Test
@DisplayName("컨ν
μΈ like μ ")
public void findByContentContaining() {
Optional<List<Custom>> list = customRepository.findByContentContaining(content);
list.flatMap(data -> data.stream()
.filter(value -> value.getContent().equals(content))
.findFirst()).ifPresent(value -> {
Assertions.assertEquals(value.getContent(), content);
});
}
}
Assertions.assertEquals
μ κ²½μ° λ°μ΄ν°μ κ°μ μ 무λ₯Ό μ²΄ν¬ ν΄μ£Όλ λ©μλμ΄λ€.
μ±κ³΅μ νλ©΄ μλμ²λΌ pass λλ€.
λ§μ½ 컨ν μΈ λΆλΆμμ μλμ κ°μ΄ λ€λ₯Έ λ°μ΄ν°λ₯Ό λ£μ΄μ£Όλ©΄ μλμ κ°μ΄ fail μ΄ λλ€.
@Test
@DisplayName("컨ν
μΈ jpa ending with μ ")
public void findByEndingWith(){
Optional<List<Custom>> list = customRepository.findByContentEndingWith(content);
list.flatMap(data ->
data.stream()
.filter(value -> value.getContent().equals(content))
.findFirst())
.ifPresent(value -> Assertions.assertEquals(value.getContent() , "dddd"));
}
@BeforeAll
μ μλ λμ§ μλλ€.
νμ§λ§@BeforeEach
λ μλνλ€.