[java] JUnitParams와 PowerMock를 함께 사용하는 방법은 어떻게 되나요?
- 의존성 추가: 먼저 프로젝트의 의존성 관리 도구 (예 : Maven 또는 Gradle)를 사용하여 JUnitParams와 PowerMock의 의존성을 추가해야합니다. 예를 들어 Maven의 경우 다음과 같이 추가할 수 있습니다.
<dependency>
<groupId>pl.pragmatists</groupId>
<artifactId>JUnitParams</artifactId>
<version>1.1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
- JUnitParams 애노테이션 사용: JUnitParams를 사용하여 매개 변수화된 테스트를 작성할 수 있습니다. 일반적으로
@RunWith
애노테이션과 함께Parameterized.class
클래스를 사용하여 테스트 클래스를 확장합니다. 예를 들어:
@RunWith(Parameterized.class)
public class MyParameterizedTest {
@Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] {
{ 1, 2, 3 },
{ 4, 5, 9 },
{ 7, 8, 15 }
});
}
private int num1;
private int num2;
private int expectedSum;
public MyParameterizedTest(int num1, int num2, int expectedSum) {
this.num1 = num1;
this.num2 = num2;
this.expectedSum = expectedSum;
}
@Test
public void testSum() {
int actualSum = num1 + num2;
assertEquals(expectedSum, actualSum);
}
}
- PowerMock 설정: PowerMock을 사용하여 정적 및 최종 클래스를 테스트하려면 PowerMock의
@RunWith
애노테이션을 사용하여 테스트 클래스를 확장해야합니다. 예를 들어:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ MyClassWithStaticMethods.class, MyFinalClass.class })
public class MyPowerMockTest {
@Test
public void testStaticMethod() {
PowerMockito.mockStatic(MyClassWithStaticMethods.class);
PowerMockito.when(MyClassWithStaticMethods.myStaticMethod()).thenReturn("Mocked");
String result = MyClassWithStaticMethods.myStaticMethod();
assertEquals("Mocked", result);
}
@Test
public void testFinalClass() throws Exception {
MyFinalClass mockedInstance = PowerMockito.mock(MyFinalClass.class);
PowerMockito.whenNew(MyFinalClass.class).withAnyArguments().thenReturn(mockedInstance);
PowerMockito.when(mockedInstance.myFinalMethod()).thenReturn("Mocked");
MyFinalClass instance = new MyFinalClass();
String result = instance.myFinalMethod();
assertEquals("Mocked", result);
}
}
위의 예제 코드에서 MyClassWithStaticMethods
는 정적 메서드를 포함한 클래스이며, MyFinalClass
는 최종 클래스입니다. PowerMock의 @PrepareForTest
애노테이션을 사용하여 이러한 클래스를 선언으로 나열해야합니다.
JUnitParams와 PowerMock를 함께 사용하는 방법에 대한 간단한 예제를 제공했습니다. 이를 참고하여 프로젝트에서 필요한 테스트를 작성할 수 있습니다. 추가 자세한 사용 방법에 대해서는 JUnitParams와 PowerMock의 공식 문서와 예제를 참조하시기 바랍니다.