IoCと0ユニットテストを使用していない15歳のレガシープロジェクトにユニットテストコードカバレッジを追加するように割り当てられました。私は、などdoNothingメソッドはvoid静的メソッドでは機能しません
ServiceクラスはperformService
方法は、コード
public void performService(requestMessage, responseMessage) {
UserAccount userAccount = requestMessage.getUserAccount();
GroupAccount groupAccount = requestMessage.getGroupAccount();
Type type = requestMessage.getType();
StaticServiceCall.enroll(userAccount, groupAccount, type);
response.setStatus(Status.SUCCESS);
}
次ましたあり、経営者は他のチームがQAテストのようなリファクタリングのために巻き込まれたくない、それは生産上の完璧な罰金を動作しますので、コードをリファクタリングすることは許されないのです
このStaticServiceCall.enroll
メソッドは、リモートサービスを呼び出しています。私のユニットテストは、EclipseがThe method when(T) in the type Stubber is not applicable for the arguments (void)
Eclipseの停止と訴える
@RunWith(PowerMockRunner.class)
@PrepareForTest(StaticServiceCall.class)
public class EnrollmentServiceTest {
@Test
public void testPerformService() {
mockStatic(StaticServiceCall.class);
doNothing().when(StaticServiceCall.enroll(any(UserAccount.class), any(GroupAccount.class), any(Type.class)));
service.performService(requestMessage, responseMessage);
assertEquals("Enrollment should be success, but not", Status.SUCCESS, response.getStatus);
}
が
mockStatic(StaticServiceCall.class);
doNothing().when(StaticServiceCall.class);
StaticServiceCall.enroll(any(UserAccount.class), any(GroupAccount.class), any(Type.class));
service.performService(requestMessage, responseMessage);
assertEquals("Enrollment should be success, but not", Status.SUCCESS, response.getStatus);
テストケースにテストコード変更した場合UnfinishedStubbingException
で失敗しました文句です。私はpowermockを使用しています1.6.6