2012-01-16 14 views
13

Actualmente estoy usando la jerarquía de prueba de 2 niveles en DUnit (Proyecto de prueba -> Caso de prueba -> Método de prueba; vea el ejemplo a continuación). ¿Es posible introducir niveles de 3er nivel o incluso más?DUnit prueba la jerarquía

DUnit Example

Respuesta

9

Puede utilizar conjuntos de pruebas para crear tantos niveles de anidamiento como se desee. El documentation ofrece el siguiente ejemplo:

La unidad TestFramework expone la clase TTestSuite, la clase que implementa conjuntos de pruebas, por lo que puede crear jerarquías de prueba usando más código explícito:

La siguiente función, UnitTests , crea un conjunto de pruebas y añade los dos clases de prueba a la misma:

function UnitTests: ITestSuite; 
var 
    ATestSuite: TTestSuite; 
begin 
    ATestSuite := TTestSuite.create('Some trivial tests'); 
    ATestSuite.addTest(TTestArithmetic.Suite); 
    ATestSuite.addTest(TTestStringlist.Suite); 
    Result := ATestSuite; 
end; 

Sin embargo, otra manera 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, la TTestSuite constructor añade las pruebas en la matriz pasada a la suite .

puede registrar un conjunto de pruebas creada en cualquiera de las formas anteriores por usando la misma llamada que se utiliza para registrar los casos de prueba individuales:

initialization  
    RegisterTest('Simple Test', UnitTests); 
end. 

Cuando se ejecuta con GUITestRunner, verá la nueva jerarquía.

+0

Funciona, gracias. – kludg

+6

@Serg También puede agregar puntos en el nombre bajo el cual registra las pruebas y DUnit agregará un nivel por punto. Por ejemplo, cuando hace 'RegisterTest ('Simple.Test', UnitTests);' Creará Simple como nodo y Test como un subnodo de eso en la jerarquía de pruebas. Muy buena característica para agrupar las pruebas en diferentes unidades bajo el mismo nombre funcional. –

+0

@Marjan +1 eso está bien, no lo sabía. Tengo la sensación de que hay mucho poder en DUnit que no se conoce ampliamente. –

3

Puede agrupar pruebas relacionadas en suites de prueba, que se pueden anidar.

Si desea hacerlo en tiempo de ejecución, consulte mi "Open Component Test Framework (OpenCTF)" en sourceforge.

11

Construyo una jerarquía colocando barras invertidas en `SuitePath '. Por ejemplo:

initialization 

    RegisterTests('Group1\Group2', [TExampleTests1.Suite, 
            TExampleTests2.Suite]); 

    RegisterTests('Group1\Group3', [TExampleTests3.Suite, 
            TExampleTests4.Suite]); 
end. 

Al final me sale algo como esto:

Example DUnit Test Hierarchy

Mucho menos al rededor de la manera de David, y se puede extender sus definiciones de grupo a través de unidades dispares.

Cuestiones relacionadas