私はSpring MVCを使用するプロジェクトを持っています。 私はプロジェクトのアーキテクチャにあるサービスモジュールの単位テスト、 を書こうとしています。 すべてのサービスクラスは、 "BaseService"という名前のスーパークラスから拡張されています。 BaseServiceはこのようなものです。このような依存関係を注入したスーパークラスを模擬する方法
"voToBvo (S vo, Class<? extends BaseBVO> bvoClass")
:
public abstract class BaseService {
private static final Logger logger = LoggerFactory.getLogger(BaseService.class);
@Autowired(required = true)
private HttpServletRequest request;
@Autowired
private ReloadableResourceBundleMessageSource messageSource;
/*
* Injecting Mapper
*/
@Resource
private Mapper mapper;
...
public <T extends BaseBVO, S extends BaseVO> T voToBvo (S vo, Class<? extends BaseBVO> bvoClass) {
if (vo != null)
{
return (T) mapper.map(vo , bvoClass);
}
else
{
return null;
}
}
今、私はこの方法を使用するサービス・モジュール内のメソッドを持っている
public List<AdcOptionBVO> findOptionByAyantDroitIdAndProduitId (Long idAyantDroit, String idProduit) {
....
list = listVoToBvo(adcList , AdcOptionBVO.class);
logger.info("Returning List of ayrp count= {}" , list.size());
return list;
}
私のテストは、このようなものです:
@RunWith(MockitoJUnitRunner.class)
public class AdcServiceImplTest{
@Mock
private Mapper mapper;
@Test
public void shouldSuccessFindOptionByAyantDroitIdandProduitId() {
//Given
List<AdcVO> adcVOList = new ArrayList<>();
adcVOList.add(new AdcVO());
List<AdcOptionBVO> listAdcOptionBVO = new ArrayList<>();
listAdcOptionBVO.add(new AdcOptionBVO());
List<BaseBVO> baseBVOs = new ArrayList<>();
//When
when(repository
.finAdcByOptionOrderByRUAndPrio(anyLong(), anyString())).thenReturn(adcVOList);
when(baseService.listVoToBvo(adcVOList, AdcOptionBVO.class)).thenReturn(baseBVOs);
//Then
assertEquals(adcService
.findOptionByAyantDroitIdAndProduitId(anyLong(), anyString()).size(), adcVOList.size());
}
}
マッパーを呼び出すときにBaseService.javaでjava.lang.NullPointerExceptionが発生する。
@Resource
private Mapper mapper;
マッパーはnullです!
私はメソッドをモックとしたい:
listVoToBvo(adcList , AdcOptionBVO.class);
助けてください。