Unit- & Regressietesten in Visual FoxPro – deel 2 van 3: Meten is weten
Introductie
In het eerste deel van deze 3-delige reeks - dat u hier kunt lezen - heb ik automatisch testen in het algemeen besproken, en ik heb de tool VFPUnit geïntroduceerd die je van dienst kan zijn om je Visual FoxPro code automatisch te testen. In dit tweede deel laat ik wat meer van VFPUnit zien.
Meten is weten
De sleutelwoorden TEST en MEASURE
Deze twee sleutelwoorden zijn synoniem aan elkaar – kies maar welke je wilt.
Ze gebruiken de onderstaande syntax:
TEST(lSuccess, [cFailMessage])
1) lSuccess: a Boolean value; often an expression whose result is a Boolean
2) cFailMessage: an optional message; often an expression that states expected vs. actual results.
3)Geeft OK of FAIL terug
NB: TEST() zonder parameters geeft standaard een Fail terug!
De onderstaande code geeft 3 Fails en 2 Ok’s terug:

En de resultaten van bovenstaande tests zijn:

In het “Test Results Details” venster zie je de info voor een geslaagde (Ok) test:

To err is human
Tutorial – To err is human
Je kunt je eigen standaard foutbericht per test definiëren door een tekst in het veld “Failure Message” in te vullen. Dit geldt overigens niet voor SAMPLING ERROR's – die blijven vermeld worden zoals gewoonlijk. Merk op dat een standaardtekst bij “Failure Message” is ingevuld.

Gebruik verder de cFailMessage parameter om zoveel informatie mogelijk over de fout weer te geven:
lnX = _screen.formCount
WAIT WINDOW NOWAIT "There Are " +ALLTRIM(STR(lnX)) +" Forms Active"
TEST()
TEST(.T.)
TEST(.F., 'Sample Failed cuz I told it to')
* be aware when mixing quotes.
TEST(.T., 'This Message Is Visible in "Result Details Window" only, for
lSuccess was Set to .T.')
* Constant KCR is internally defined as CHR(13)
TEST(.F., 'Messages Can Span Multiple Lines' +KCR +_
'By Using The Constant KCR' +KCR +'Open Details Window To See')
Listing 1: Gebruik van de cFailMessage parameter
Een verstandig gebruik van de cFailMessage parameter vergemakkelijkt het zoeken naar de oorzaak van fouten:

Het is mogelijk om zeer uitgebreide berichten weer te geven:

En je kunt instellen of van de testresultaten alleen de mislukte, de geslaagde of alle tests wilt weergeven:

NB:Ik heb wel opgemerkt dat bij grote aantallen resultaten dit filter niet altijd goed werkt. Wanneer er een klein aantal Failures bij een groot aantal Successes aanwezig is, kan een filter op “Show Failures Only” een lege lijst weergeven…
Het eerste argument van de TEST() methode kan alle mogelijke logische expressies zijn. De syntax van de TEST() methode kan als volgt opgevat worden:
TEST({expression}, "Did Not See Expected Result")
lnX = _screen.formCount
LOCAL llResult
* _screen.formCount > 0 is an expression that is .T. if any windows
* are open, .F. if not.
llResult = _screen.formCount > 0
* expect to see at least the VFPUnit forms.
TEST(llResult, "No Forms Are Open" +KCR +"Should See At Least One!")
Listing 2: Gebruik van een logische expressie als de lSuccess parameter
Hier zie je dezelfde code in het “Testing Code” venster:

Door op Apply and Run te klikken krijg je ‘Alles Ok’ te zien:

En door vervolgens op Result Details >> te klikken zie je welke test geslaagd is:

NB: Een groen vakje “Passed” en een grijs tekstgebied geven tezamen aan dat de foutmelding niet van toepassing is! Vandaar het motto “Test For Truth, Scream Injustice”.
“Test For Truth, Scream Injustice”
Tutorial – Suite
We gaan nu de test aan een testsuite koppelen en bewaren. Klik op Suite in het Experiments-venster, en het venster “Lab Runs” verschijnt:

Klik op New. Voer een naam in de voor de testsuite en klik vervolgens op Save:

Sluit het venster “Lab Runs” door op de Select knop te klikken:

Klik op Save in het venster “Experiment” om de test onder de nieuwe suite te bewaren:

Het is ook mogelijk om een nieuwe suite toe te voegen door een nieuwe suitenaam in het vakje “Suite” in het venster “Experiment” in te voeren en het experiment te bewaren, mits dit vakje actief is.
Je zult merken dat als je het venster “Suites of Experiments” naar de voorgrond brengt (m.b.v. het “Window” menu) dat er een suite is bewaard en dat de test A nu deel van die suite uitmaakt:

De knop New From Copy in het “Experiment” venster kopieert de huidige test naar een kopie, die deel van dezelfde suite uitmaakt. De naam kan vervolgens gewijzigd worden alvorens de nieuwe test op te slaan.

Wordt vervolgd
In het volgende deel voltooien we samen deze tutorial en passeren een aantal geavanceerde onderwerpen de revue…
Links:
Klik hier voor deel 1 van dit artikel.
Klik hier voor deel 3 van dit artikel.