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.

¿Fue útil?

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top