IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tests et Performance Java Discussion :

Tests unitaire sous springboot avec mockito


Sujet :

Tests et Performance Java

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Tests unitaire sous springboot avec mockito
    Hello,

    Je débute dans le dev Java et je tente sans succès de réaliser un test.
    J'ai des erreurs sur les méthodes "when" et "thenreturn " qui me disent :

    The method "when" and "thenReturn"(Player) is undefined for the type PlayerPronoTest
    sachant que " PlayerPronoTest " est le nom de la classe de mes tests unitaires

    Voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    package com.apside.prono.test;
     
    import org.junit.Before;
     
    import static org.junit.Assert.assertNotNull;
     
    import java.util.Date;
     
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.MockitoAnnotations;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
     
    import com.apside.prono.model.Player;
    import com.apside.prono.repository.PlayerRepository;
    import com.apside.prono.service.PlayerService;
     
    @RunWith(SpringJUnit4ClassRunner.class)
     
    public class PlayerPronoTest {
     
    	@Mock
    	private PlayerRepository playerRepository;
     
    	@InjectMocks
    	private PlayerService playerService;
     
     
    	@Before
    	public void init() {
    	    MockitoAnnotations.initMocks(this);
    	}
     
    	@Test
    	public void canGetPlayerById(Player player) {
    		when(playerService.getPlayerById(2L))thenReturn(player);
     
    		assertNotNull(player);
    		}
    	}
    Vous remerciant pour votre aide

  2. #2
    Membre éclairé

    Homme Profil pro
    Ouvrier de l'informatique [ et quelquefois ingénieur logiciel ]
    Inscrit en
    Mars 2013
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ouvrier de l'informatique [ et quelquefois ingénieur logiciel ]
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 185
    Points : 767
    Points
    767
    Par défaut
    bonjour

    en espérant avoir compris la question voici un exemple de code extrapolé à partir de ta seule classe de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    package com.apside.prono.test;
     
    import static org.junit.Assert.assertEquals;
    import static org.junit.Assert.assertNotNull;
    import static org.junit.Assert.assertTrue;
    import static org.mockito.Mockito.when;
     
    import java.util.Optional;
     
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.mockito.InjectMocks;
    import org.mockito.Mock;
    import org.mockito.junit.MockitoJUnitRunner;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
     
    import com.apside.prono.model.Player;
    import com.apside.prono.repository.PlayerRepository;
    import com.apside.prono.repository.PlayerRepositoryImpl;
    import com.apside.prono.service.PlayerServiceImpl;
    /**
     * 
     * https://static.javadoc.io/org.mockito/mockito-core/2.23.0/org/mockito/Mockito.html
     * 
     */
    @RunWith(MockitoJUnitRunner.class)
    @ContextConfiguration(classes = { PlayerServiceImpl.class , PlayerRepositoryImpl.class })
    public class PlayerPronoTest {
     
    	@Mock
    	private PlayerRepository<Player, Long> playerRepository;//= mock(PlayerRepository.class);
     
    	@Autowired
    	@InjectMocks
    	private PlayerServiceImpl playerService;
     
     
    	@Test
    	public void canGetPlayerById() {
     
    		System.out.println("playerRepository = " + playerRepository.getClass());
    		System.out.println("playerService    = " + playerService.getClass());
     
    		//configure playerRepository's mock (to avoid DB access when calling the service)
    		final Player player = new Player();
    		player.setId(2L);
    		player.setName("secondPlayer");
    		when(playerRepository.findById(2L)).thenReturn(Optional.of(player));
     
    		//now use the mock : call the playerService that relies on playerRepository's mock 
    		final Optional<Player> actual = playerService.getPlayerById(2L);
    		System.out.println("actual=" + actual);
    		assertNotNull(actual);
    		assertTrue(actual.isPresent());
    		assertEquals(2L, actual.get().getId());
     
    	}
    }
    l'affichage dans la console d'execution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    playerRepository = class com.apside.prono.repository.PlayerRepository$MockitoMock$191531234
    playerService    = class com.apside.prono.service.PlayerServiceImpl
    actual=Optional[Player [id=2, name=secondPlayer]]

    le zip du projet maven a importer sous STS :

    mockito-example20190724.zip

  3. #3
    Membre éclairé

    Homme Profil pro
    Ouvrier de l'informatique [ et quelquefois ingénieur logiciel ]
    Inscrit en
    Mars 2013
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Ouvrier de l'informatique [ et quelquefois ingénieur logiciel ]
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 185
    Points : 767
    Points
    767
    Par défaut
    d'ailleurs c'est mieux pour cet exemple de supprimer l'implémentation du repository ( PlayerRepositoryImpl.java ) car ça illustre la force de Mockito qui instancie un Mock a partir de l'interface.

Discussions similaires

  1. Test unitaire des ejb avec maven sous EAP6
    Par Cafeinoman dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 26/02/2014, 15h34
  2. [DBUnit] Test Unitaire de dao avec DbUnit & HSQLDB
    Par ReaM dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 16/03/2009, 10h51
  3. Tests unitaires sous VSTS/TFS
    Par despeludo dans le forum Contribuez
    Réponses: 11
    Dernier message: 12/03/2009, 17h07
  4. Outil de test IHM sous Linux avec Application JAVA et AWT
    Par mmayniel dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 18/01/2007, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo