Jerarquía de pruebas de dunito
Pregunta
Actualmente estoy usando la jerarquía de prueba de 2 niveles en Dunit (Proyecto de prueba -> Caso de prueba -> Método de prueba; ver ejemplo a continuación). ¿Es posible introducir el tercer nivel o incluso más niveles?
Solución
Puede usar suites de prueba para crear tantos niveles de anidación como desee. los documentación Ofrece el siguiente ejemplo:
los
TestFramework
la unidad expone elTTestSuite
clase, la clase que implementa suites de prueba, por lo que puede crear jerarquías de prueba utilizando un código más explícito:La siguiente función,
UnitTests
, crea una suite de prueba y le agrega las dos clases de prueba:function UnitTests: ITestSuite; var ATestSuite: TTestSuite; begin ATestSuite := TTestSuite.create('Some trivial tests'); ATestSuite.addTest(TTestArithmetic.Suite); ATestSuite.addTest(TTestStringlist.Suite); Result := ATestSuite; end;
Otra forma más de implementar la función anterior sería:
function UnitTests: ITestSuite; begin Result := TTestSuite.Create( 'Some trivial tests', [TTestArithmetic.Suite, TTestStringlist.Suite] ); end;
En el ejemplo anterior, el
TTestSuite
El constructor agrega las pruebas en la matriz pasada a la suite.Puede registrar un conjunto de pruebas creado en cualquiera de las formas anteriores utilizando la misma llamada que utiliza para registrar casos de prueba individuales:
initialization RegisterTest('Simple Test', UnitTests); end.
Cuando corre con
GUITestRunner
, verás la nueva jerarquía.
Otros consejos
Construyo una jerarquía colocando barras de mochila en el 'Unitapath'. Por ejemplo:
initialization
RegisterTests('Group1\Group2', [TExampleTests1.Suite,
TExampleTests2.Suite]);
RegisterTests('Group1\Group3', [TExampleTests3.Suite,
TExampleTests4.Suite]);
end.
Al final obtengo algo como esto:
Mucho menos irrumpir que con el camino de David, y puedes difundir las definiciones de tu grupo en unidades dispares.
Puede agrupar pruebas relacionadas en suites de prueba, que pueden anidarse.
Si desea hacerlo en el momento de ejecución, consulte mi "Open Component Test Framework (OpenCTF)" en Fuente de la fuente.