¿Cómo puedo desactivar las pruebas DUnit por nombre de programación?
-
28-09-2019 - |
Pregunta
Para las pruebas de integración, que creó un banco de pruebas DUnit que se ejecuta una vez para cada versión de un componente tercero (un intermediario de mensajes). Desafortunadamente, algunas pruebas siempre fallan debido a errores conocidos en algunas versiones del componente de prueba.
Este medio de los bancos de pruebas nunca se completará con un 100%. Para las pruebas automatizadas sin embargo, se requiere una puntuación de éxito del 100%. DUnit no ofrece un método ya preparado para las pruebas de desactivar en un conjunto de pruebas por su nombre.
Solución
Me escribió un procedimiento que toma un conjunto de pruebas y una lista de nombres de las pruebas, se desactivan todas las pruebas con un nombre coincidente, y también realiza una recursión en conjuntos de pruebas anidadas.
procedure DisableTests(const ATest: ITest; const AExclude: TStrings);
var
I: Integer;
begin
if AExclude.IndexOf(ATest.Name) <> -1 then
begin
ATest.Enabled := False;
end;
for I := 0 to ATest.Tests.Count - 1 do
begin
DisableTests(ATest.Tests[I] as ITest, AExclude);
end
end;
Ejemplo de uso (la TStringList ‘Excluye’ se crea en el método de Configuración):
procedure TSuiteVersion1beta2.SetUp;
begin
// fill test suite
inherited;
// exclude some tests because they will fail anyway
Excludes.Add('TestA');
Excludes.Add('TestB');
DisableTests(Self, Excludes);
end;