[junit5] org.mockito.exceptions.base.MockitoException: The used MockMaker SubclassByteBuddyMockMaker does not support the creation of static mocks

2023. 6. 7. 16:37ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/๋ฌธ์ œ ์ •๋ฆฌ

728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

 

Mastering JUnit 5

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

๐Ÿ‘ท‍โ™‚๏ธ ์ž‘์—… ์ค‘์ธ ๋‚ด์šฉ

์•ˆ๋…•ํ•˜์„ธ์š”?

ํ˜„์žฌ ์ฃผ๋‹ˆ๋Š” Junit5์„ ์ด์šฉํ•ด์„œ Test Code๋ฅผ ์งœ๊ณ  ์žˆ์–ด์š”.

๊ทธ๋Ÿฐ๋ฐ, ์ฃผ์š” ์ •๋ณด ์•”/๋ณตํ˜ธํ™”ํ•˜๋Š” Logic์ด static์œผ๋กœ ๋งŒ๋“ค์–ด์ ธ ์žˆ๊ณ , ์ด๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž‘์—…์„ ๋ช‡ ๊ฐ€์ง€ ํ•ด์ค˜์•ผ ํ•ด์š”.

private static MockedStatic<ํ˜ธ์ถœํ•  Static Method๋ฅผ ๊ฐ–์€ Class> ๋ณ€์ˆ˜๋ช…;

728x90

์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ฃผ์–ด์•ผ ํ•ด์š”.


๊ทธ๋Ÿฐ ๋’ค ์œ„์™€ ๊ฐ™์ด Test๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™” ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ์–ด์•ผ ํ•ด์š”.



๋งˆ์ง€๋ง‰์œผ๋กœ ์œ„์™€ ๊ฐ™์ด Test๊ฐ€ ๋๋‚˜๋ฉด mockStatic์ด ๋‹ซํž ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ค˜์•ผ ํ•ด์š”.

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ•œ Thread์—์„œ staticMocking ๋“ฑ๋ก์€ ํ•œ๋ฒˆ ๋ฐ–์— ํ•  ์ˆ˜ ์—†์ด ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋  ๊ฑฐ์—์š”.

 

 

 

 

โš ๏ธ ๋ฌธ์ œ ๋ฐœ์ƒ!

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•ด ์ฃผ๊ณ , ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ ํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋˜์—ˆ์–ด์š”.


๋ฐ˜์‘ํ˜•
org.mockito.exceptions.base.MockitoException: 
The used MockMaker SubclassByteBuddyMockMaker does not support the creation of static mocks

Mockito's inline mock maker supports static mocks based on the Instrumentation API.
You can simply enable this mock mode, by placing the 'mockito-inline' artifact where you are currently using 'mockito-core'.
Note that Mockito's inline mock maker is not supported on Android.



 

 

๐Ÿค” ์›์ธ ๋ถ„์„

์ด ๋ฌธ์ œ๋Š” ํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , static Method๋ฅผ Mockingํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๋ฌธ์ œ์˜€์–ด์š”.

 

 

 

๐Ÿป ๋ฌธ์ œ ํ•ด๊ฒฐ!

build.gradle

 

<Gradle>

    // Test Code์—์„œ Static Method ์‚ฌ์šฉ์„ ์œ„ํ•œ ์˜์กด์„ฑ ์ถ”๊ฐ€
    testImplementation 'org.mockito:mockito-inline'

 

<Maven>

<!-- https://mvnrepository.com/artifact/org.mockito/mockito-inline -->
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.6.1</version>
    <scope>test</scope>
</dependency>

 

์œ„ ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•ด ์ฃผ๋ฉด ์ •์ƒ ์ž‘๋™ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

 


์œ„์™€ ๊ฐ™์ด ์ž˜ ์ฒ˜๋ฆฌ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

 

 

๐Ÿง ์ฐธ๊ณ  ์ž๋ฃŒ

 

Mastering JUnit 5

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

Mockito์—์„œ static ๋ฉ”์„œ๋“œ๋ฅผ mockingํ•˜๋Š” ๋ฐฉ๋ฒ•

LocalDateTime์ด๋‚˜ UUID, Random ๋“ฑ์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ robustํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•ด์„œ ๊ฐ’์„ ๊ณ ์ •์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” mockito-core์—์„œ๋Š” static ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ์— ๋‹ค์Œ๊ณผ ๊ฐ™

middleearth.tistory.com

 

 

 

 

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•