Comment AutoWire beans spring lors de l'utilisation de Mockito et Junit?
Je suis en train de configurer ma classe pour être utilisé dans Junit
.
Cependant lorsque j'essaie de faire le ci-dessous, j'obtiens un message d'erreur.
Actuel De La Classe De Test:
public class PersonServiceTest {
@Autowired
@InjectMocks
PersonService personService;
@Before
public void setUp() throws Exception
{
MockitoAnnotations.initMocks(this);
assertThat(PersonService, notNullValue());
}
//tests
Erreur:
org.mockito.exceptions.base.MockitoException:
Cannot instantiate @InjectMocks field named 'personService'
You haven't provided the instance at field declaration so I tried to construct the instance.
However the constructor or the initialization block threw an exception : null
Comment puis-je résoudre ce problème?
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas en se moquant de quoi que ce soit dans votre code. @InjectMocks définit une classe où une maquette sera injecté.
Votre code devrait ressembler à ceci
Une autre solution est d'utiliser
@ContextConfiguration
annotation avec statique intérieure classe de configuration comme suit:De toute façon, vous avez besoin pour se moquer de quelque chose que la méthode que vous voulez tester les utilisations à l'intérieur pour obtenir le comportement souhaité de cette méthode. Il ne fait pas de sens de se moquer du service vous effectuez le test.
Vous êtes mal comprendre le but de la simulation d'ici.
Quand vous vous moquez une classe comme ça, vous êtes feignant comme si elle a été injecté dans votre application. Cela signifie que vous ne voulez pas l'injecter!
La solution: mettre en place quelle que soit bean vous avaient l'intention d'injecter
@Mock
, et de les injecter dans votre classe de test via@InjectMocks
.Il est difficile de savoir où le bean vous voulez injecter est depuis tout ce que vous avez est le service défini, mais...
Si je ne me trompe pas...la manette de la règle est que vous ne pouvez pas utiliser les deux ensemble..vous pouvez soit exécuter unité des cas de test avec l'aide de MockitojunitRunner ou SpringJUnitRunner vous ne pouvez pas utiliser les deux ensemble.