사용자 도구

사이트 도구


java:mockito

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:mockito [2022/08/22 16:36]
kwon37xi [JUnit 5]
java:mockito [2023/11/30 14:17] (현재)
kwon37xi [mockStatic]
줄 86: 줄 86:
 @MockitoSettings(strictness = Strictness.LENIENT) @MockitoSettings(strictness = Strictness.LENIENT)
 </code> </code>
 +  * ''LENIENT''는 좋지 잘못된 stub 을 만들고 있다는 의미가 되므로 가급적 ''STRICT_STUB''(기본값)을 유지할것.
 ===== mockStatic ===== ===== mockStatic =====
-  * static method mocking+  * Mockito ''3.4.0'' 이상 버전 지원 
 +  * static method mocking. 특히 ''LocalDateTime.now()'' 테스트 등에 좋다. 
 +  * [[https://www.baeldung.com/mockito-mock-static-methods|Mocking Static Methods With Mockito | Baeldung]]
   * 항상 ''try-with-resources''로 감싸서 할 것.   * 항상 ''try-with-resources''로 감싸서 할 것.
  
  
 <code java> <code java>
- assertEquals("foo", Foo.method()); +import static org.mockito.Mockito.mockStatic;
- try (MockedStatic mocked = mockStatic(Foo.class)) { +
- mocked.when(Foo::method).thenReturn("bar"); +
- assertEquals("bar", Foo.method()); +
- mocked.verify(Foo::method); +
- } +
- assertEquals("foo", Foo.method()); +
-</code>+
  
 +assertEquals("foo", Foo.method());
 +try (MockedStatic<Foo> mocked = mockStatic(Foo.class)) {
 +    mocked.when(Foo::method).thenReturn("bar");
 +    // 혹은 Mockito.when(Foo.method()).thenReturn("bar");
 +    assertEquals("bar", Foo.method());
 +    mocked.verify(Foo::method);
 +}
 +assertEquals("foo", Foo.method());
 +</code>
 +  * 만약 mocking 할 필요가 없는 다른 static method가 호출된다면 실제 코드를 호출하게 명시적으로 지정해야 한다.
 +<code java>
 +when(LocalDateTime.from(Mockito.any())).thenCallRealMethod();
 +</code>
 ===== mockConstruction ===== ===== mockConstruction =====
   * 생성자 mocking   * 생성자 mocking
java/mockito.1661153763.txt.gz · 마지막으로 수정됨: 2022/08/22 16:36 저자 kwon37xi