DUnit:Come eseguire il test?
-
21-09-2019 - |
Domanda
Come faccio a eseguire TestCase's IDE?
ho creato un nuovo progetto, con un unico, semplice form:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
Ora vorrei aggiungere un banco di prova per verificare che spinge Button1
fa quello che deve:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
TestFramework;
type
TForm1Tests = class(TTestCase)
private
f: TForm1;
protected
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestButton1Click;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//todo
end;
{ TForm1Tests }
procedure TForm1Tests.SetUp;
begin
inherited;
f := TForm1.Create(nil);
end;
procedure TForm1Tests.TearDown;
begin
f.Free;
inherited;
end;
procedure TForm1Tests.TestButton1Click;
begin
f.Button1Click(nil);
Self.CheckEqualsString('Hello, world!', f.Caption);
end;
end.
Dato quello che ho fatto (codice di test nella GUI del progetto), come faccio ora a innescare un run di test?Se spingo F9 quindi il modulo appare semplicemente:
Idealmente si dovrebbe essere un pulsante, o l'opzione di menu, in IDE dicendo Eseguire DUnit Test:
Sto vivendo in un sogno?Una terra di fantasia, di vivere in un gumdrop casa su lollipop lane?
Soluzione
Sono d'accordo con Uwe Raabe, ma a volte può essere utile avere un collegamento 'nascosto' all'interno della vostra applicazione per eseguire la GUI dunit. Io uso:
TGUITestRunner.runRegisteredTests;
Chiamare questo dal pulsante nella parte GUI dunit si aprirà per voi per eseguire manualmente e in uscita vista di prova.
Ad esempio, se si tiene premuto uno speciale combinazione di tasti durante l'apertura del software, proprio "Pannello di controllo" , si ottiene alcune voci avanzate:
Altri suggerimenti
L'aggiunta di un TestCase al progetto principale non è la strada da percorrere. È necessario creare un TestProject separata (si può avere nella stessa ProjectGroup come il progetto principale), aggiungere un TestCase e correre.
Mi piace l'idea di avere un 'Run DUnit tests'
comando nell'IDE.
Potrebbe essere implementato in modo da verificare un DUnit progetto nella stessa cartella con lo stesso nome come il progetto corrente:
- Progetto1.dpr -> il software in prova
- Progetto1.I test.dpr => il DUnit applicazione di test
In questo caso, l'IDE dovrebbe consentire l'Esecuzione di DUnit test di comando.
Dopo l'esecuzione di prove, un elenco di tutti i test falliti dovrebbe essere visualizzato il che permette di saltare l'origine riga in cui il test impossibile.
Se il test ha causato perdite di memoria, un elenco di tutte le perdite devono essere visualizzato il che permette di saltare alla riga di origine dove la perdita di memoria è stata creata
(DUnit può essere configurato per rilevare perdite di memoria e a mancare le prove, quando si è trovato)