Sto usando DUnit per testare una libreria Delphi. A volte mi imbatto in casi, in cui scrivo diversi test molto simili per verificare più ingressi in una funzione.Posso scrivere test "parametrizzati" in DUnit
C'è un modo per scrivere (qualcosa di simile a un test parametrizzato in DUnit? Ad esempio, specificare un input e un output atteso in una procedura di test adatta, quindi eseguire la suite di test e ottenere un feedback su quale delle più analisi del test non è riuscita?
(Edit: un esempio)
Per esempio, supponiamo che ho avuto due test come questo:
procedure TestMyCode_WithInput2_Returns4();
var
Sut: TMyClass;
Result: Integer;
begin
// Arrange:
Sut := TMyClass.Create;
// Act:
Result := sut.DoStuff(2);
// Assert
CheckEquals(4, Result);
end;
procedure TestMyCode_WithInput3_Returns9();
var
Sut: TMyClass;
Result: Integer;
begin
// Arrange:
Sut := TMyClass.Create;
// Act:
Result := sut.DoStuff(3);
// Assert
CheckEquals(9, Result);
end;
potrei avere ancora di più di questi test che fanno esattamente la stessa cosa, ma con diversi input e aspettative. Non voglio unirli in un test, perché vorrei che fossero in grado di passare o fallire indipendentemente.
Intendi la creazione dinamica di casi di test per tutti i valori di input in un elenco? Il mio (piccolo) [OpenCTF] (http://sourceforge.net/projects/openctf/) framework di test contiene il codice per la creazione dinamica di casi di test. È basato su DUnit. – mjn
È sempre possibile scrivere un metodo parametrico generale nella classe di test e chiamarlo da uno o più metodi di test specifici (pubblicati). Il metodo Check (Not) Equals di un TestCase può aiutare anche qui a mantenere il codice conciso e fornire comunque un messaggio di errore specifico per ogni test. –
@Marjan il metodo di test interrompe l'esecuzione non appena il primo Check (Not) Equals non riesce - la creazione dinamica di test case risolve questo problema, tutti gli altri valori saranno comunque testati – mjn