Pergunta

Se você criar um projeto ActionScript puro no Flex Builder 3 e quer fazer unidade teste usando FlexUnit, qual é a melhor opção?

A built-in Flex Builder irá recusar-se a construir o arquivo mxml que contém o componente TestRunnerBase, pois é um projeto ActionScript puro (sem Flex permitido). É impossível adicionar o arquivo mxml para a lista de "ActionScript Applications" nas configurações do projeto.

Agora eu posso ver duas opções, tanto indesejável.

  1. Adicionar a unidade testar arquivo mxml para o projeto e criar uma configuração de ferramenta externa para construir e executá-lo. Esta é a abordagem que eu estou tomando agora, e ele funciona muito bem, exceto que depuração interativa é impossível.
  2. Crie um novo projeto Flex apenas para o arquivo mxml de teste e adicionar o diretório src do projeto principal como um diretório fonte adicional nas opções de compilação. Eu não gosto dessa abordagem porque ele exige que eu mantenha o arquivo mxml em uma árvore diretório separado de todos os outros arquivos de origem, além da feiúra de manter dois projetos.
Foi útil?

Solução

Há sempre ASUnit .

Outras dicas

Eu acabei colocando o arquivo mxml teste de unidade no projeto original, criando um novo projeto Flex, excluindo o diretório src, e substituí-lo com um Eclipse pasta vinculada ao diretório src do projeto ActionScript. Esta configuração parece funcionar bem.

Nós fizemos algo semelhante a fim de obter FlexUnit trabalhar com CruiseControl.net (servidor de integração contínua).

Na nossa implementação, temos o código abaixo prazo no manipulador FlexEvent.CREATION_COMPLETE da classe Application.

Como você saída dos resultados dos testes de unidade é completamente até você. Nossa implementação tem sido utilizado com ar e Zinc3 e tanto a produção de uma representação XML NUnit-friendly e, em seguida, sair do aplicativo (com um código de saída de -1 se todos os testes falhou).

// import mx.core.Application;
// import flexunit.framework.*;

// class AutomatedTestHarness extends Application implements TestListener

private function creationCompleteHandler(event : Event) : void
{
    this._result = new TestResult();
    this._result.addListener(this);

    var testSuite : TestSuite = new TestSuite();
    this.addUnitTests(testSuite);

    testSuite.runWithResult(_result);
}

/**
  * Implement these as part of TestResult.addListener
  * If you want to output xml after the tests run, do so here
  * (Tip: Count tests in endTest and compare the count to testSuite.countTestCases()
  * to find out when all tests have completed)
  */
function startTest(test : Test) : void {}
function endTest(test : Test) : void {}
function addError(test : Test, error : Error) : void {}
function addFailure(test : Test, error : AssertionFailedError) : void {}

Talvez você poderia usar flexunit.textui.TestRunner, que saída o resultado para o Console.

Nós fatoramos todo o código que queremos teste em projetos de biblioteca. Em seguida, basta ter um projeto separado para os nossos testes, que é um projeto flexível, que depende do projeto em teste.

Tente AS3Unit de libspark. Eles também têm um kit de teste beta assíncrona.

Tente AS3Unit de libspark. Eles também têm um kit de teste beta assíncrona.

remover o elemento 'excludedEntries' em .actionScriptProperties do seu projeto arquivo deve funcionar, eu uso essa forma de arquivo de construção mxml no meu projeto ActionScript puro.

Você pode verificar a forma como temos configurar a compilação para Robotlegs usando FlexUnit4 e suas tarefas CI formiga.

Para o controle de versão que tira todos os arquivos de projeto Flex / Flash Builder. pastas src e de teste são ambos configurados como caminhos src. Os testes são rand através da construção Ant. Alternativamente um segundo projeto com um corredor pode ser configurado se a vida do corredor de teste visual.

Ele tem sido muito eficaz e fácil de usar em muitos contribuidores.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top