πŸ“š Study/Spring

User@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)ꡳ이 RANDOM_PORTλ₯Ό ν•˜λŠ” 이유

kkh1902 2023. 5. 2. 14:43
728x90
λ°˜μ‘ν˜•

1. 포트 좩돌 λ°©μ§€

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  λ•Œ κΈ°λ³Έ 포트인 8080이 이미 μ‚¬μš© 쀑인 경우, 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ 포트 μΆ©λŒμ„ λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

2. 병렬 ν…ŒμŠ€νŠΈ μˆ˜ν–‰ κ°€λŠ₯

ν…ŒμŠ€νŠΈλ₯Ό λ³‘λ ¬λ‘œ μˆ˜ν–‰ν•  λ•Œ, μ—¬λŸ¬ ν…ŒμŠ€νŠΈκ°€ 같은 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ 좩돌이 λ°œμƒν•˜μ—¬ ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ λ³‘λ ¬λ‘œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

3. 톡합 ν…ŒμŠ€νŠΈ μˆ˜ν–‰

@SpringBootTest μ–΄λ…Έν…Œμ΄μ…˜μ€ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹œμž‘ν•˜κ³ , ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ— ν•„μš”ν•œ λΉˆμ„ μžλ™μœΌλ‘œ λ“±λ‘ν•˜μ—¬ 톡합 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. 랜덀 포트λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ 개의 ν…ŒμŠ€νŠΈμ—μ„œ 같은 μ„œλ²„λ₯Ό κ³΅μœ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

 

λ”°λΌμ„œ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν…ŒμŠ€νŠΈν•  λ•Œ @SpringBootTest μ–΄λ…Έν…Œμ΄μ…˜μ˜ webEnvironment 속성을 SpringBootTest.WebEnvironment.RANDOM_PORT둜 μ„€μ •ν•˜λŠ” 것은 포트 좩돌 방지와 ν…ŒμŠ€νŠΈ μˆ˜ν–‰μ˜ νŽΈμ˜μ„±μ„ μœ„ν•΄ ꢌμž₯λ˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

 

@LocalServerPortλŠ” Spring Boot ν…ŒμŠ€νŠΈμ—μ„œ ν˜„μž¬ μ‹€ν–‰ 쀑인 μ„œλ²„μ˜ 포트λ₯Ό μ£Όμž…λ°›κΈ° μœ„ν•œ μ–΄λ…Έν…Œμ΄μ…˜μž…λ‹ˆλ‹€. 이 μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜λ©΄ @SpringBootTest와 SpringBootTest.WebEnvironment.RANDOM_PORT 속성을 ν•¨κ»˜ μ‚¬μš©ν•  λ•Œ, 랜덀 포트둜 μ„œλ²„κ°€ 싀행될 λ•Œ μ‚¬μš©λœ 포트λ₯Ό κ°€μ Έμ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class MyTest {

    @LocalServerPort
    int port;

    @Test
    void test() {
        // ν˜„μž¬ μ‹€ν–‰ 쀑인 μ„œλ²„μ˜ 포트λ₯Ό μ‚¬μš©ν•˜μ—¬ ν…ŒμŠ€νŠΈ μˆ˜ν–‰
        String url = "http://localhost:" + port + "/api/something";
        // ...
    }
}

μœ„μ˜ μ˜ˆμ œμ—μ„œ @LocalServerPort μ–΄λ…Έν…Œμ΄μ…˜μ„ μ‚¬μš©ν•˜μ—¬ port λ³€μˆ˜μ— ν˜„μž¬ μ‹€ν–‰ 쀑인 μ„œλ²„μ˜ ν¬νŠΈκ°€ μ£Όμž…λ©λ‹ˆλ‹€. 그리고 test() λ©”μ„œλ“œμ—μ„œ port λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μ„œλ²„μ— μ ‘κ·Όν•©λ‹ˆλ‹€.

 

@LocalServerPort μ–΄λ…Έν…Œμ΄μ…˜μ€ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν…ŒμŠ€νŠΈλ₯Ό 보닀 νŽΈλ¦¬ν•˜κ²Œ μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯으둜, 랜덀 포트둜 μ„œλ²„λ₯Ό μ‹€ν–‰ν•˜κ³  이λ₯Ό ν…ŒμŠ€νŠΈμ—μ„œ μ‚¬μš©ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.

728x90
λ°˜μ‘ν˜•