Je suis nouveau dans l'utilisation des outils de test sur le .NET Framework, je l'ai donc téléchargé à partir de NuGet avec l'aide de ReSharper.
J'utilise ceci Quick Start pour apprendre à utiliser nUnit. Je venais de copier le code et une erreur est survenue sur cet attribut:
[ExpectedException(typeof(InsufficientFundsException))] //it is user defined Exception
L'erreur est:
Le nom de type ou d'espace de nom 'ExpectedException' est introuvable (manque-t-il une directive using ou une référence d'assembly?)
Pourquoi? Et si j'ai besoin d'une telle fonctionnalité, avec quoi dois-je la remplacer?
Si vous utilisez NUnit 3.0, votre erreur est due au fait que ExpectedExceptionAttribute
a été supprimé . Vous devriez plutôt utiliser une construction comme Throws Constraint .
Par exemple, le didacticiel que vous avez lié contient ce test:
[Test]
[ExpectedException(typeof(InsufficientFundsException))]
public void TransferWithInsufficientFunds()
{
Account source = new Account();
source.Deposit(200m);
Account destination = new Account();
destination.Deposit(150m);
source.TransferFunds(destination, 300m);
}
Pour modifier cela pour fonctionner sous NUnit 3.0, modifiez-le comme suit:
[Test]
public void TransferWithInsufficientFunds()
{
Account source = new Account();
source.Deposit(200m);
Account destination = new Account();
destination.Deposit(150m);
Assert.That(() => source.TransferFunds(destination, 300m),
Throws.TypeOf<InsufficientFundsException>());
}
Je ne sais pas si cela a changé récemment, mais avec NUnit 3.4.0, il fournit Assert.Throws<T>
.
[Test]
public void TransferWithInsufficientFunds() {
Account source = new Account();
source.Deposit(200m);
Account destination = new Account();
destination.Deposit(150m);
Assert.Throws<InsufficientFundsException>(() => source.TransferFunds(destination, 300m));
}
Si vous souhaitez toujours utiliser des attributs, considérez ceci:
[TestCase(null, typeof(ArgumentNullException))]
[TestCase("this is invalid", typeof(ArgumentException))]
public void SomeMethod_With_Invalid_Argument(string arg, Type expectedException)
{
Assert.Throws(expectedException, () => SomeMethod(arg));
}