AbstractClass Junit с автопроводной аннотацией - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть абстрактный класс, который использует аннотацию @Autowired внутри него. Я пытаюсь написать джунит, используя MockitoJUnitRunner.

@RunWith(MockitoJUnitRunner.class)
public class AbstractAdminSearchServiceTest {

 @Mock
 private IUPSService upsService;

 Map<String,String> map;

  @Before
    public void setUp() {
      map=new HashMap<>();
    }

 @Test
 public void testSearchAdministratorsForIndividualNotification(){
     AbstractAdminSearchService 
 mock=Mockito.mock(AbstractAdminSearchService.class,
             Mockito.CALLS_REAL_METHODS);
     when(upsService.getUsersProfile(buildUserIds(),new String[] 
{})).thenReturn(map);
     mock.searchAdministratorsForIndividualNotification(buildSolrUsers(), 
"");

 }

@ Мок не работает, а «upsService» не издевается. В результате, когда фактически вызывается upsService.getUsersProfile, я получаю исключение NullpointerException.

1 Ответ

0 голосов
/ 13 сентября 2018

В основном мы не будем писать Junits для абстрактных классов, потому что мы не можем создать объект для них, если это обычный конкретный класс вместо приведенного ниже кода

mock=Mockito.mock(AbstractAdminSearchService.class,
Mockito.CALLS_REAL_METHODS);

use

@InjectMocks
private AbstractAdminSearchService mock;

и тогда все насмешки будут вставлены в реальный объект

...