私は外部Webサービスに接続するSpringブートアプリケーションを持っています。プロジェクトはgradleを使って構築されています。私は自分のプログラムで外部呼び出しを嘲笑しています。 STSでjunit testとして実行すると、テストは正常に実行されています。しかし、私が "グラデルビルド"を行うと、テストは失敗しています。ログを調べると、模擬されたオブジェクトを返す代わりに、実際のサービスにテストが掛かっているため、失敗していると思います。テストの一環としてmockitoによって生成されたモックオブジェクトを私のgradleビルドが選択するために必要なことはありますか?Gradldビルド - ユニットテストを実行するためにMockitoによって作成されたモックオブジェクトを使用
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ProxyApplication.class)
@WebAppConfiguration
public class ApplicationWrapperTest {
@Mock
private SoapClient soapClient;
@InjectMocks
@Autowired
private ApplicationWrapper applicationWrapper;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testDatesInApplication() throws Exception{
//return mock object (webservice response) when soapClient is called
}
ApplicationWrapperコード
@Component
public class ApplicationWrapper {
@Resource(name = "factory.soapClient")
private SoapClientFactory soapClientFactory;
@Autowired
private JsonUtil jsonUtil;
@Autowired
private DomainUtil domainUtil;
private static final String clientId = "soapClient";
public String execute(String request, String apiName){
Object req = domainUtil.createRequest(request, apiName);
Object jaxbResponse = this.soapClientFactory.getClient(clientId).marshalSendAndReceive(req);
Object response = domainUtil.createResponse(jaxbResponse, apiName);
return jsonUtil.toJsonString(response) ;
}
}
「ProxyApplication」クラスコードを追加できますか?あなたのモックをオーバーライドする可能性があり、Gradle/Eclipseクラスパスの違いにより、Gradleの場合のみオーバーライドされています。 – Adam
こんにちは@adamr、ProxyApplicationクラスはSpringBoot Mainクラスであり、多数のコンポーネントスキャンが存在します。ビルド中にモックが常に優先順位を取るようにする方法はありますか? –