でユニットテストで@Serviceを注入することはできません。アプリケーションクラスでは、scanBasePackagesを指定します。これを別のやり方でやらなくてはなりませんか?ありがとう。は、私はユニットテストでモックしようとしていますが、私はこれまでのところ、NULL値を取得@Serviceを持ってSpringBootプロジェクト
これは、インターフェイスを実装し、私のサービスクラスです:
@Service
public class DeviceService implements DeviceServiceDao {
private List<Device> devices;
@Override
public List<Device> getDevices(long homeId) {
return devices;
}
}
は、これは私のユニットテストです。
public class SmartHomeControllerTest {
private RestTemplate restTemplate = new RestTemplate();
private static final String BASE_URL = “..”;
@Mock
private DeviceService deviceService;
@Test
public void getHomeRegisteredDevices() throws Exception {
Device activeDevice = new DeviceBuilder()
.getActiveDevice(true)
.getName("Alexa")
.getDeviceId(1)
.getHomeId(1)
.build();
Device inativeDevice = new DeviceBuilder()
.getInactiveDevice(false)
.getName("Heater")
.getDeviceId(2)
.getHomeId(1)
.build();
UriComponentsBuilder builder = UriComponentsBuilder
.fromUriString(BASE_URL + "/1/devices");
List response = restTemplate.getForObject(builder.toUriString(), List.class);
verify(deviceService, times(1)).getDevices(1);
verifyNoMoreInteractions(deviceService);
}
で試してみてください、私はこの部分を変更しませんでした。私は注射の問題に焦点を当てました。しかし、あなたはおそらく正しいでしょう。また、OPは検索された 'List'に対してアサーションを作成しません。 – davidxxx
SpringBootTestとMockBeanアノテーションを追加しましたが、nullコンテキストを取得しました: "原因:java.lang.IllegalArgumentException:NULLを持つApplicationContextを読み込めません 'contextLoader'テストクラスに@ContextConfigurationまたは@ContextHierarchyアノテーションを付けることを検討してください" – user1140656