JUnitParams는 JUnit을 보완하여 매개변수화된 테스트 케이스를 작성할 수 있도록 도와주는 라이브러리입니다. 이 라이브러리를 사용하여 테스트 더블(Mock, Stub)을 사용하는 방법에 대해 알아보겠습니다.
-
Mock 객체 만들기 Mock 객체는 실제 객체의 동작을 흉내내는 가짜 객체입니다. Mock 객체를 만들기 위해서는 일반적으로 Mockito 라이브러리를 사용합니다. 다음은 Mockito를 사용하여 Mock 객체를 만드는 예시입니다.
import static org.mockito.Mockito.*; // ... SomeClass mockObject = mock(SomeClass.class);
-
Stub 설정하기 Stub은 Mock 객체의 특정 메서드를 호출했을 때 반환되는 값을 지정하는 것을 말합니다. Mockito를 사용하여 Stub을 설정하는 방법은 다음과 같습니다.
// Mock 객체의 메서드를 Stub 설정 when(mockObject.someMethod()).thenReturn("mocked value");
위의 예시에서는
mockObject
의someMethod()
가 호출될 때 “mocked value”를 반환하도록 Stub 설정을 하였습니다. -
테스트 코드 작성하기 JUnitParams를 사용하여 매개변수화된 테스트 메서드를 작성할 수 있습니다. Mock 객체와 Stub 설정을 이용하여 테스트 코드를 작성하는 예시는 다음과 같습니다.
import org.junit.*; import org.junit.runner.RunWith; import junitparams.*; import static org.junit.Assert.*; import static org.mockito.Mockito.*; // ... @RunWith(JUnitParamsRunner.class) public class MyTestClass { @Test @Parameters({"1", "2", "3"}) public void myTestMethod(int param){ // Mock 객체 생성 SomeClass mockObject = mock(SomeClass.class); // Stub 설정 when(mockObject.someMethod()).thenReturn("mocked value"); // 테스트 로직 수행 String result = mockObject.someMethod(); // 결과 검증 assertEquals("mocked value", result); verify(mockObject).someMethod(); } }
위의 예시에서는
myTestMethod()
라는 매개변수화된 테스트 메서드를 작성하였습니다.mockObject
를 생성하고someMethod()
의 Stub을 설정하여 테스트 로직을 수행하고, 결과를 검증하는 과정을 포함하고 있습니다.
이와 같이 JUnitParams와 Mockito를 함께 사용하여 테스트 더블을 활용할 수 있습니다. JUnitParams의 테스트 케이스 작성 기능과 Mockito의 Mock 및 Stub 기능을 조합하여 효율적인 테스트 코드를 작성할 수 있습니다.
참고 자료: