私はdaoの実装のためのテストケースを持っています。
テストクラスコード -春のブートDaoテスト
@RunWith(SpringRunner.class)
@RestClientTest({XyzDaoImpl.class})
@TestPropertySource(locations = "classpath:application-test.properties")
public class XyzDaoTest {
@Autowired
XyzDaoImpl xyzDaoImpl;
@Test
public void testGetXyzDetails(){
assertThat(xyzDaoImpl.getXyzDetails("123", null)).isNotNull();
}
}
xyzDaoImpl.getXyzDetailsメソッドの実装は、RestTemplateを使用してバックエンドを呼び出します。
私のconfigクラスのコードが含まれている場合、このテストは、正常に動作します -
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
が、私は、タイムアウトなどを設定するためにビルダーを使用して、残りのテンプレートを作成した場合、テストが失敗した -
@Profileを使って豆を作成しようとしました@Bean
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder
.setConnectTimeout(timeout)
.build();
}
を( "test")defaultと@Profile( "!test") - カスタム設定は、まだテストに失敗します。
エラーがある - @RestClientTest
で実行している場合
testException = java.lang.AssertionError: No further requests expected: HTTP POST http://... url.
は、このの世話をしました。ありがとう – chappalprasad
上記の@RunClientTestを単体テストのようにしておくと、applicationContextエラーを読み込めません。
私はセットアップ方法で以下を追加しました。
server = MockRestServiceServer.createServer(新しいRestTemplate());
また、XYZDaoImplでAutoriedクラスを含めて試してみました。 EnabledWebMvcを追加した後、Beanを取得しないjava.servlet.ServletContext – chappalprasad
@ ServAppContextは@WebAppConfigurationによって提供されます。 @EnableWebMvcを持つコンポーネントがコンポーネントのスキャンパスにあるため、これを見つけようとしています。 @EnableWebMvcでコンポーネントを除外するか、@ WebAppConfigurationを持つ別のコンポーネントを追加することができます。 – sabertiger