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

C# Discussion :

Erreur test unitaire NUnit


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Erreur test unitaire NUnit
    Bonjour,

    J'essaie d'écrire un test unitaire d'un exemple qui utilise l'architecture MVP.
    Lorsque je lance le test, j'ai le message d'erreur suivant:

    UnitTests.Tests.testCopy:
    Expected: "Testing ..."
    But was: null
    Je poste ci-dessous les bouts de code que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    namespace Copy
    {
        public interface IView
        {
            string Copy { get; set; }
            string Original { get; }
            event EventHandler Changed;
        }
    }
    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
     
    namespace Copy
    {
        public class Presenter
        {
            private IView view;
            public Presenter(IView view)
            {
                this.view = view;
                this.view.Changed +=new EventHandler(OnChanged);
            }
     
            public void OnChanged(object sender, EventArgs e)
            {
                view.Copy = view.Original;
            }
        }
    }
    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using NUnit.Framework;
    using NUnit.Mocks;
    using Copy;
     
    namespace UnitTests
    {
        [TestFixture]
        public class Tests
        {
            private DynamicMock viewMock;
            private Presenter presenter;
     
            [SetUp]
            public void setup()
            {
                viewMock = new DynamicMock(typeof(IView));
                presenter = new Presenter((IView)viewMock.MockInstance);
            }
     
            [Test]
            public void testCopy()
            {
                viewMock.ExpectAndReturn("get_Original", "Testing ...");
                viewMock.Expect("get_Cpoy");
                Assert.AreEqual("Testing ...", ((IView)viewMock.MockInstance).Copy);
            }
        }
    }
    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
     
    namespace Copy
    {
        public partial class Form1 : Form, IView
        {
            private Presenter presenter;
     
            public Form1()
            {
                InitializeComponent();
                presenter = new Presenter(this);
                this.t_original.TextChanged += OnChanged;
            }
     
            public string Original
            {
                get { return t_original.Text; }
            }
     
            public string Copy
            {
                get { return t_copy.Text; }
                set { t_copy.Text = value;}
            }
     
            private void OnChanged(object sender, EventArgs e)
            {
                if (Changed != null)
                    Changed(sender, e);
            }
     
            public event EventHandler Changed;
        }
    }
    Merci pour votre aide.

  2. #2
    Membre averti Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Points : 422
    Points
    422
    Par défaut
    Bonjour,


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    [Test]
            public void testCopy()
            {
                viewMock.ExpectAndReturn("get_Original", "Testing ...");
                viewMock.Expect("get_Cpoy");
                Assert.AreEqual("Testing ...", ((IView)viewMock.MockInstance).Copy);
            }
    C'est ce test qui échoue, .Copy te retourne null, et n'est donc pas égal à "Testing ...".
    Execute en débogage pas à pas pour regarder ce qui se passe

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Je ne connais pas le système de mock de NUnit, mais il n'y aurait pas une faute de frappe sur cette ligne ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    viewMock.Expect("get_Cpoy");
    (je ne sais pas à quoi sert Expect, mais je suppose que le paramètre devrait plutôt être "get_Copy" pour correspondre au nom de la propriété...)

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Je n'ai pas d'apport particulier à ajouter aux commentaires précédents, juste une interrogation: tu crées un objet à partir d'une interface ?
    De prime abord, ça va à l'encontre de mes cours de OO.
    Une classe aurait suffit, surtout pour juste 3 variables.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par shini86161 Voir le message
    Je n'ai pas d'apport particulier à ajouter aux commentaires précédents, juste une interrogation: tu crées un objet à partir d'une interface ?
    De prime abord, ça va à l'encontre de mes cours de OO.
    Une classe aurait suffit, surtout pour juste 3 variables.
    L'interface sert justement à faire abstraction de l'implémentation de la vue, pour limiter le couplage entre vue et présenteur... C'est le principe du pattern MVP. Et il ne crée pas d'objet à partir de l'interface (ce qui de toutes façons n'est pas possible), il crée un mock pour cette interface.

Discussions similaires

  1. [Hudson] exception lors de l'exécution de tests unitaires nunit
    Par Kalisto44 dans le forum Intégration Continue
    Réponses: 1
    Dernier message: 14/04/2011, 11h40
  2. tests unitaires Team System vs Nunit
    Par fourchette dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 11/05/2010, 15h52
  3. Tests unitaires Nunit
    Par baconix dans le forum Débuter
    Réponses: 0
    Dernier message: 21/07/2009, 10h01
  4. Réaliser les tests unitaires avec Nunits
    Par soso78 dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 18/02/2009, 22h33
  5. Test unitaire avec C# et nunit
    Par jeromechezgdf dans le forum C#
    Réponses: 6
    Dernier message: 16/07/2007, 11h51

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