DUnit: Cómo ejecutar las pruebas?
-
21-09-2019 - |
Pregunta
¿Cómo se ejecuta TestCase 's desde el IDE?
He creado un nuevo proyecto, con una única y sencilla, la forma:
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.
Ahora voy a añadir un caso de prueba para comprobar que empujar Button1
hace lo que debe:
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.
Teniendo en cuenta lo que he hecho (código de prueba en el proyecto GUI), ¿cómo ahora se activan una racha de las pruebas? Si empujo F9 entonces la forma simplemente aparece:
Lo ideal sería un botón, u opción de menú, en el IDE diciendo Realización de pruebas DUnit
¿Estoy viviendo en un mundo de sueños? Una tierra de fantasía, vivir en una casa pastilla de goma en el carril de piruleta?
Solución
Estoy de acuerdo con Uwe Raabe, pero a veces puede ser útil disponer de un enlace 'oculta' dentro de su aplicación para ejecutar la interfaz gráfica de usuario DUnit. Yo uso:
TGUITestRunner.runRegisteredTests;
Llama a esta desde el botón en la interfaz gráfica de usuario DUnit se abrirá para que usted pueda ejecutar de forma manual y la salida de vista de prueba.
Por ejemplo, si se mantiene pulsado una combinación de teclas especial al abrir propios "Panel de control" , que recibe algunas entradas avanzadas del software:
Otros consejos
La adición de un TestCase al proyecto principal no es el camino a seguir. Se debe crear un TestProject separado (se puede tener en la misma medida que el proyecto ProjectGroup principal), añadir un TestCase y correr.
Me gusta la idea de tener un comando 'Run DUnit tests'
en el IDE.
Podría ser implementada mediante la comprobación de un proyecto DUnit en la misma carpeta, que tienen el mismo nombre que el proyecto actual:
- Project1.dpr -> el software bajo prueba
- Project1.Tests.dpr => la aplicación de prueba DUnit
En este caso, el IDE debe permitir la ejecución de comandos DUnit prueba.
-
Después de ejecutar las pruebas, una lista de todas las pruebas fallidas se debe mostrar lo que permite saltar a la línea de origen en una prueba de no .
-
Si las pruebas causaron pérdidas de memoria, una lista de todas las fugas se debe mostrar lo que permite saltar a la línea fuente donde la pérdida de memoria se ha creado
(DUnit se puede configurar para detectar pérdidas de memoria y fallar pruebas cuando uno ha sido encontrado)