60 votes

Messages d'exception de test unitaire avec xUnit

Je convertis actuellement mes tests unitaires MsTest en xUnit. Avec xUnit, existe-t-il un moyen de tester les messages d'exception ? Est-il correct de tester les messages d'exception par opposition uniquement au type d'exception ?

104voto

the_joric Points 4755

Je pense qu'il est correct de tester à la fois le type d'exception et le message. Et les deux sont faciles dans xUnit :

 var exception = Assert.Throws<AuthenticationException>(() => DoSomething());
Assert.Equal(message, exception.Message);

7voto

user1829319 Points 264

Mieux vaut utiliser la méthode Record.Exception car elle correspond au modèle AAA :

     [Fact]
    public void Divide_TwoNumbers_ExpectException()
    {
        var sut = new Calculator();
        var exception = Record.Exception(() => sut.Divide(10, 0));
        Assert.IsType(typeof(DivideByZeroException), exception);
    }

J'espère que cela t'aides ...

1voto

user2982369 Points 11

Quelque chose comme ça

  var ex = Record.Exception(() => DoSomeThing());
 Assert.IsType(typeof(ArgumentNullException), ex);
 Assert.True(ex.Message.Contains("Your exception message"));

1voto

Andy Creigh Points 38

BTW, Resharper préfère ne pas utiliser typeof et suggère à la place Assert.IsType, par exemple

 var ex = Record.Exception(() => new FooController(null, null));
Assert.IsType<ArgumentNullException>(ex);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X