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

Framework .NET Discussion :

[Nunit] Assert . That . Throws


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut [Nunit] Assert . That . Throws
    salut tlm

    je galère un peu avec Nunit sur le fait de vérifier que telle exception est bien lancée, elle est de tel type et le message est bien "truc"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Assert.That(
                    _myObject.getVersion(),
                    Throws.TypeOf<System.Runtime.InteropServices.COMException>()
                        .With.Property("Message").EqualTo("The activation key is not installed."),
                        "on attend bien une exception ici"
    );
    Je comprends pas pk, mais le foutu voyant refuse de passer vert
    Pourtant je l'ai passé au debugger et d'une part le type de l'exception est correct, d'autre part le message est bon aussi.
    c'est ma manière d'écrire l'assertion qui ne va pas.

    la documentation de référence là dessus (http://www.nunit.org/index.php?p=thr...traint&r=2.5.4) ne m'est d'aucune utilité

    qqn voit où j'ai mal écrit ?


  2. #2
    Invité de passage
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut Il existe des solutions beaucoup plus simples
    Nous avons développé Visual T#, un langage de programmation de développement de tests unitaires, gratuit, compatible C# v2 qui simplifie grandement l'écriture (et donc la lecture) des tests unitaires.

    Ainsi, ton code pour tester l'exception deviendrait simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    testclass
    {
      test
      {
        MyClass _myObject = ...;
     
        runtest _myObject.getVersion();
     
        assert thrown COMException;
      }  
    }

    En testant aussi le message d'erreur:

    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
     
    testclass
    {
      test
      {
        MyClass _myObject = ...;
     
        runtest _myObject.getVersion();
     
        assert thrown COMException e 
        {
          assert e.Message == "The activation key is not installed.";
        }
      }  
    }

  3. #3
    Membre éclairé

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Par défaut
    interessant ce Visual T#
    faudra que j'y jette un oeil à l'occasion.

    cela dit, peut-etre c'est une erreur de ma part dans mon approche, mais je suis tres frileux avant d'adopter un package tiers. l'aspect robustesse et maturité est déterminant pour moi. or je n'avais juste jamais entendu parlé de Visual T# avant alors que je louche sur NUnit depuis... oula bien trop longtemps

    sinon pour info, j'ai finalement trouvé mon bonheur par là : http://nunit.net/blogs/?p=63

    en gros le code ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            /// à consulter à ce sujet
            /// http://nunit.net/blogs/?p=63
            /// http://www.nunit.org/index.php?p=exceptionAsserts&r=2.5.1
            /// je n'ai pas réussi à faire le Assert.That introduit dans Nunit 2.5 pourtant son élégance me séduisait
     
            [Test,ExpectedException(typeof(System.Runtime.InteropServices.COMException), ExpectedMessage="The activation key is not installed.")]
            public void test_failing_function_Throws_Exception() {
                MyClass m = new MyClass();
                m.doSomething(5000); // will fail
            }
    je trouve ca clairment moins éléguant que l'approche Visual T#, et surtout je regrette le Assert That Throws que je trouvais franchement pas mal. Mais bon, le plus important c'est que ca marche

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Par défaut
    Citation Envoyé par fourchette Voir le message
    je trouve ca clairment moins éléguant que l'approche Visual T#, et surtout je regrette le Assert That Throws que je trouvais franchement pas mal. Mais bon, le plus important c'est que ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var exception = Assert.Throws<COMException>(() => _myObject.getVersion());
    Assert.That(exception.Message, Is.EqualTo("The activation key is not installed."));
    (waip, il y a plein de façons de faire la même chose :)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/12/2004, 22h09
  2. assert ou generer une exception
    Par onap dans le forum C++
    Réponses: 2
    Dernier message: 01/12/2004, 16h49
  3. vue propre ou table crade ? that's the question
    Par Maitre B dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 10/11/2004, 16h19
  4. [Assertions] avec Eclipse
    Par Vorms dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 10/08/2004, 22h54
  5. [Débutant] Utilisation du mot clé ASSERT
    Par analysiz dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 29/07/2004, 11h43

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