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 :

Mockito - drôle d'erreur


Sujet :

Tests et Performance Java

  1. #1
    Membre habitué
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Points : 143
    Points
    143
    Par défaut Mockito - drôle d'erreur
    Bonjour,

    je commence avec Mockito et il m'arrive quelque chose de déstabilisant. J'ai une classe qui contient 3 tests. Quand je démarre les tests, seul le premier passe sans problème. Si je désactive le premier tests, du coup le second est vert.

    Comment est ce possible? Quel est mon problème?

    Me classe de test est la suivante:
    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
     
    public class ServiceTest {
     
        @Test(
              expected = ServiceException.class)
        public void add_exception() throws ServiceException {
            Bean bean = null;
            IServiceDAO serviceDAO = Mockito.mock(IServiceDAO.class);
            Mockito.doThrow(new ServiceException()).when(serviceDAO).save(bean);
            Service service = new Service(serviceDAO);
            service.add(bean);
        }
     
        @Test
        public void add() throws ServiceException {
            Bean bean = new Bean(1, "name");
            IServiceDAO mock = Mockito.mock(IServiceDAO.class);
            Mockito.when(mock.save(bean)).thenReturn(true);
            // Mockito.expectLastCall().once();
            Service service = new Service(mock);
            service.add(bean);
            Mockito.verify(mock);
        }
     
        @Test
        public void validate() {
            Bean bean = Mockito.mock(Bean.class);
            BeanUtils mock = Mockito.mock(BeanUtils.class);
            boolean expected = false;
            Mockito.when(BeanUtils.isValid(bean)).thenReturn(expected);
            Service service = new Service();
            boolean result = service.isValid(bean);
            Mockito.verify(mock);
            Assert.assertEquals(expected, result);
        }
     
    }
    et merci d'avance pour votre aide

  2. #2
    Membre habitué
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    167
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 167
    Points : 143
    Points
    143
    Par défaut
    Pour que cela fonctionne, j'ai fait un reset de mes mocks après chaque test.

    Maintenant, cela semble fonctionner mais je trouve ça tordu, et vous, qu'en pensez vous?

    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
     
    public class ServiceTest {
     
        List<Object> mocks = new ArrayList<Object>();
     
        @After
        public void reset() {
            System.out.println("After class, cleaning up.");
            for (Object obj : mocks) {
                Mockito.reset(obj);
            }
        }
     
        @Test(
              expected = ServiceException.class)
        public void add_exception() throws ServiceException {
            Bean bean = null;
            IServiceDAO serviceDAO = Mockito.mock(IServiceDAO.class);
            mocks.add(serviceDAO);
            Mockito.doThrow(new ServiceException()).when(serviceDAO).save(bean);
            Service service = new Service(serviceDAO);
            service.add(bean);
            Mockito.reset(bean, serviceDAO);
        }
     
     
        @Test()
        public void add_normal() throws ServiceException {
            Bean bean = new Bean(1, "name");
            IServiceDAO serviceDAO = Mockito.mock(IServiceDAO.class);
            mocks.add(serviceDAO);
            Mockito.when(serviceDAO.save(bean)).thenReturn(true);
            // Mockito.expectLastCall().once();
            Service service = new Service(serviceDAO);
            service.add(bean);
            Mockito.verify(serviceDAO).save(bean);
        }
     
     
        @Test
        public void validate() {
            Bean bean = Mockito.mock(Bean.class);
            BeanUtils beanUtils = Mockito.mock(BeanUtils.class);
            mocks.add(bean);
            mocks.add(beanUtils);
            boolean expected = false;
            Mockito.doReturn(expected).when(beanUtils).isValid(bean);
            Service service = new Service();
            // boolean result2 = Mockito.verify(beanUtils).isValid(bean);
            // Assert.assertFalse(result2);
            boolean result = service.isValid(bean);
            Assert.assertFalse(result);
        }

Discussions similaires

  1. [Tk] drôle d'erreur
    Par duplo dans le forum Tkinter
    Réponses: 2
    Dernier message: 25/01/2007, 12h42
  2. Réponses: 1
    Dernier message: 20/07/2006, 15h42
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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