Mockito @Mock does not inject into named @Resource as expected

I have a class with three @Resource names:

@Resource(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator paginationRequestValidator;

@Resource(name = "integerMaxPaginationRequestValidator")
private PaginationRequestValidator integerMaxPaginationRequestValidator;

@Resource(name = "contactsSearchResultPaginationRequestValidator")
private PaginationRequestValidator contactsSearchResultPaginationRequestValidator;

After upgrading to Mockito 1.9.5 from version 1.8.5, the test began to fail. The test suite made fun of the PaginationRequestValidator only once as follows:

@Mock
private PaginationRequestValidator mockPaginationRequestValidator;

This resulted in only the third of the three instances being injected, as the following sysout makes clear:

paginationRequestValidator (contactsPaginationRequestValidator) is null
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is null
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is mockPaginationRequestValidator

Obviously, there have been changes in behavior between the two versions. I assume that the older version introduced the layout in all three fields - this would still be an acceptable solution for me.

Being the smart guy that I am, I decided that I could pass the test by providing the name associated with the resource as follows:

@Mock(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator mockPaginationRequestValidator;

, . , , , , , @Mock. . Sysout:

paginationRequestValidator (contactsPaginationRequestValidator) is null
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is null
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is contactsPaginationRequestValidator

. , . , , :

@Mock(name = "contactsPaginationRequestValidator")
private PaginationRequestValidator mockPaginationRequestValidator;

@Mock(name = "integerMaxPaginationRequestValidator")
private PaginationRequestValidator mockIntegerMaxPaginationRequestValidator;

SYSOUT:

paginationRequestValidator (contactsPaginationRequestValidator) is contactsPaginationRequestValidator
integerMaxPaginationRequestValidator (integerMaxPaginationRequestValidator) is integerMaxPaginationRequestValidator
contactsSearchResultPaginationRequestValidator (contactsSearchResultPaginationRequestValidator) is null

, , .

, , , . , , "" ?

@InjectMocks.

+4
1

InjectMocks :

; mocks , , , .

, 3 mocks, .

+4

Source: https://habr.com/ru/post/1532544/


All Articles