Pregunta

Soy la creación de un conjunto de pruebas funcionales para una aplicación que carga un archivo de configuración externo. En este momento, estoy usando la función de addAsync FlexUnit para cargarlo y luego otra vez a prueba si los contenidos apuntan a los servicios que existen y se pueden acceder.

El problema con esto es que tener este tipo de dos (o más) mediante el método etapa que estoy ejecutando todos mis pruebas en el contexto de una prueba con docenas de afirma, que parece como una especie de forma degenerada de utilizar el marco, y hace que los insectos más difíciles de encontrar. ¿Hay una manera de tener algo así como una configuración asíncrona? ¿Hay otro marco de pruebas de que los mangos de esto mejor?

¿Fue útil?

Solución

Si se asume que está utilizando FlexUnit 4, addAsync puede llamar desde un método [BeforeClass]:

public class TestFixture
{
    [BeforeClass]
    public static function fixtureSetup() : void
    {
        // This static method will be called once for all the tests
        // You can also use addAsync in here if your setup is asynchronous
        // Any shared state should be stored in static members
    }

    [Test]
    public function particular_value_is_configured() : void
    {
        // Shared state can be accessed from any test
        Assert.assertEquals(staticMember.particularValue, "value");
    }
}

Una vez dicho esto, las pruebas de código que tiene acceso a un archivo es realmente una prueba de integración. También soy apenas en condiciones de argumentar en contra de usar ASMock:)

Otros consejos

Es bastante fácil, pero me llevó 2 días para averiguarlo. La solución:

En primer lugar es necesario crear una var alguna parte estática.

 public static var stage:Stage

Hay un FlexUnitApplication.as creados por el marco FlexUnit, y en la función onCreationComplete (), se puede establecer el escenario para la referencia estática creada anteriormente:

private function onCreationComplete():void
    {
        var testRunner:FlexUnitTestRunnerUIAS=new FlexUnitTestRunnerUIAS();
        testRunner.portNumber=8765; 
        this.addChild(testRunner); 
        testStageRef.stage=stage //***this is what I've added
        testRunner.runWithFlexUnit4Runner(currentRunTestSuite(), "testsuitename");
    }

y cuando usted podrá acceder a la etapa en el programa, se debe reemplazar a:

if(stage==null) stage=testStageRef.stage

Parece que usted necesita para eliminar la dependencia de la carga de ese archivo externo. Prácticamente todas las pruebas Aysnchronous se pueden eliminar mediante el uso de un de burla marcos . ASMock es una opción perfecta para Flex. Se le permitirá a la falsificación del objeto URLoader y el retorno trucadas configuraciones para ejecutar las pruebas en contra. Burlándose de ayuda con la voluntad de escribir mucho mejores pruebas unitarias como se puede burlarse de todas las dependencias síncrona o asíncrona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top