Skip to content

Latest commit

 

History

History
153 lines (128 loc) · 5.23 KB

Teste_Manual.md

File metadata and controls

153 lines (128 loc) · 5.23 KB

Manual de testes Salic

Versões:

É importante observar as versões da bibliotecas de documentação do PHPUnit, pois estamos usando a ultima versão compativel sem modificar o core do Zend Framework.

Estrutura de pastas

./tests
├── application
│   ├── Bootstrap.php (bootstrap dos testes, configuração de hook, init e helpers)
│   └── modules (testes seguindo os modulos)
│       ├── admissibilidade
│       │   ├── MensagemControllerTest.php
│       │   ├── RecursoCoordenadorControllerTest.php
│       │   └── RecursoProponenteControllerTest.php
│       ├── agente
│       │   └── controllers
│       │       └── AgentesControllerTest.php
│       └── autenticacao
│          └── controllers
│              ├── IndexControllerTest.php
│              └── LogincidadaoControllerTest.php
├── bin
│   └── test.sh (script para executar todos os teste do sistema)
├── log (pasta com codecoverage gerado pelo PHPUnit)
└── phpunit.xml (configuraçãos dos testes)

Passo a passo

1°passo - Entrar na pasta dos testes.

$ cd ./caminho/projeto/tests/bin

2°passo - Em sistemas *nix da permissão de execução

$ chmod +x test.sh

3°passo - Configurar login dos testes, que geralmente fica no ambiente de [testing : production] do arquivo application.ini

$ cd ./application/configs/
$ vim application.ini 

Exemplo de configuração da sessão de test do arquivo application.ini:

test.params.login = 239XXXXXX - usuario que será usado para executar os testes
test.params.password = m2XXXX - Senha do usuario de testes

resources.db.adapter = "PREENCHER" resources.db.params.host = "PREENCHER" resources.db.params.dbname = "PREENCHER" resources.db.params.username = "PREENCHER" resources.db.params.password = "PREENCHER" resources.db.params.port = "PREENCHER" resources.db.params.charset = "PREENCHER"

OBS: O usuario precisa ter os perfis de acesso ao sistema necessarios para executar os testes, caso contrario recebermos falhas.

4°passo - Executar os tests

$ cd ./caminho/projeto/tests/bin
$ ./test.sh # executa todos os testes do projeto.

OBS: Ao executar esse script todos os tests dentro do application/modules serão executados, o que pode levar algum tempo. Recomendamos a execução dos tests separadamente atraves do comando:

cd ./tests/application
../../vendor/bin/phpunit --debug --colors --verbose -c ../phpunit.xml modules/NomeDoModulo/controllers/NomeDoTesteTest.php

5°passo - Devemos receber uma resposta parecida com essa:

exemplo de teste

Referências

Nós criamos algumas funçes auxiliáres para ajudar nos testes que se encontram nesse arquivo: ControllerActionTestCase.php

Abaixo, referẽncia de implementação de testes possíveis:

<?php

class PlanoDistribuicaoControllerTest extends MinC_Test_ControllerActionTestCase
{
    public function setUp()
    {
        parent::setUp();
    }
    
    public function testIndexAction()
    {
        $this->autenticar();
        $this->perfilParaProponente();
       
        //reset para garantir respostas.
        $this->resetRequest()
            ->resetResponse();
	      $idPreProjeto = 240102;
        // Acessando local de realizacao
        $url = '/proposta/plano-distribuicao?idPreProjeto=' . $idPreProjeto;
        $this->request->setMethod('GET');
        $this->dispatch($url);
        $this->assertNotRedirect();

        $this->assertModule('proposta');
        $this->assertController('plano-distribuicao');
        $this->assertAction('index');
    }

    public function testDetalharPlanoDistribuicaoAction()
	{
        $this->autenticar();
        $this->perfilParaProponente();
        $url = '/proposta/plano-distribuicao/detalhar-plano-distribuicao/idPreProjeto/240102/idPlanoDistribuicao/192467';
        $this->request->setMethod('GET');
        $this->dispatch($url);
        $this->assertModule('proposta');
        $this->assertController('plano-distribuicao');
        $this->assertAction('detalhar-plano-distribuicao');
    }

    public function testSalvarAction()
	{
        $this->autenticar();
        $this->perfilParaProponente();

        $this->resetRequest()
            ->resetResponse();

        $url = '/proposta/plano-distribuicao/salvar?idPreProjeto=240105';
        $this->request->setMethod('POST')
            ->setPost([
            'areaCultural' => 1,
            'idPlanoDistribuicao' => '',
            'idProjeto' => '',
            'prodprincipal' => 0,
            'produto' => 81,
            'segmentoCultural' => 17
        ]);

        $this->dispatch($url);
        $this->assertRedirectTo('/proposta/plano-distribuicao/index?idPreProjeto=240105');
    }
}