Zoeken…


Beweringen om logica te controleren moeten altijd waar zijn

Beweringen worden niet gebruikt om invoerparameters te testen, maar om te controleren of de programmaflow correct is, dat wil zeggen dat u op een bepaald moment bepaalde veronderstellingen over uw code kunt maken. Met andere woorden: een test uitgevoerd met Debug.Assert moet er altijd van uitgaan dat de geteste waarde true .

Debug.Assert wordt alleen uitgevoerd in DEBUG-builds; het wordt gefilterd uit RELEASE-builds. Het moet worden beschouwd als een hulpmiddel voor foutopsporing naast het testen van eenheden en niet als een vervanging van codecontracten of methoden voor invoervalidatie.

Dit is bijvoorbeeld een goede bewering:

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

Hier is assert een goede keuze omdat we kunnen aannemen dat RetrieveSystemConfiguration () een geldige waarde retourneert en nooit null retourneert.

Hier is nog een goed voorbeeld:

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

Eerst kunnen we aannemen dat RetrieveUserData () een geldige waarde retourneert. Voordat we de eigenschap Age gebruiken, verifiëren we vervolgens de veronderstelling (wat altijd waar moet zijn) dat de leeftijd van de gebruiker strikt positief is.

Dit is een slecht voorbeeld van bewering:

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

Bewering is niet voor inputvalidatie omdat het onjuist is om aan te nemen dat deze bewering altijd waar zal zijn. U moet daarvoor invoervalidatiemethoden gebruiken. In het bovenstaande geval moet u ook controleren of de invoerwaarde in de eerste plaats een getal is.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow