C# Language Les affirmations pour vérifier la logique doivent toujours être vraies


Exemple

Les assertions ne sont pas utilisées pour tester les paramètres d'entrée, mais pour vérifier que le flux de programme est conforme, c'est-à-dire que vous pouvez faire certaines hypothèses sur votre code à un moment donné. En d'autres termes: un test effectué avec Debug.Assert devrait toujours supposer que la valeur testée est true .

Debug.Assert ne s'exécute que dans les versions DEBUG; il est filtré des constructions RELEASE. En plus des tests unitaires, il doit être considéré comme un outil de débogage et non comme un remplacement des contrats de code ou des méthodes de validation des entrées.

Par exemple, c'est une bonne assertion:

var systemData = RetrieveSystemConfiguration();
Debug.Assert(systemData != null);

Ici, assert est un bon choix car nous pouvons supposer que RetrieveSystemConfiguration () retournera une valeur valide et ne renverra jamais null.

Voici un autre bon exemple:

UserData user = RetrieveUserData();
Debug.Assert(user != null);
Debug.Assert(user.Age > 0);
int year = DateTime.Today.Year - user.Age;

Tout d'abord, nous pouvons supposer que RetrieveUserData () renverra une valeur valide. Ensuite, avant d'utiliser la propriété Age, nous vérifions l'hypothèse (qui devrait toujours être vraie) que l'âge de l'utilisateur est strictement positif.

Ceci est un mauvais exemple d'affirmation:

string input = Console.ReadLine();
int age = Convert.ToInt32(input);
Debug.Assert(age > 16);
Console.WriteLine("Great, you are over 16");

Assert n'est pas pour la validation des entrées car il est incorrect de supposer que cette assertion sera toujours vraie. Vous devez utiliser des méthodes de validation des entrées pour cela. Dans le cas ci-dessus, vous devez également vérifier que la valeur d'entrée est un nombre en premier lieu.