Aviso
Atualizar para CodeIgniter4 é altamente recomendado.
Uma maneira mais fácil de usar PHPUnit com CodeIgniter 3.x.
Você não precisa modificar os arquivos principais do CodeIgniter.
Você pode escrever testes de controlador facilmente.
Nada é testável, talvez.
Bem documentado.
PHP 7.3 ou posterior
Se você usar o Monkey Patching, deverá usar o PHP-Parser 4.2 ou posterior como uma dependência do Composer.
CodeIgniter 3.x
Se você deseja atualizar para CodeIgniter4, consulte #361.
PHPUnit 9.3 ou posterior
Se você quiser usar o PHPUnit 9.2 ou anterior, use ci-phpunit-test 2.x.
NetBeans
Vá para Propriedades do projeto > Teste > PHPUnit , marque a caixa de seleção Usar conjunto de testes personalizado e selecione application/tests/_ci_phpunit_test/TestSuiteProvider.php
.
Consulte Log de alterações.
codeigniter/ ├── application/ │ └── tests/ │ ├── _ci_phpunit_test/ ... don't touch! files ci-phpunit-test uses │ ├── Bootstrap.php ... bootstrap file for PHPUnit │ ├── DbTestCase.php ... DbTestCase class │ ├── TestCase.php ... TestCase class │ ├── controllers/ ... put your controller tests │ ├── libraries/ ... put your library tests │ ├── mocks/ │ │ └── libraries/ ... mock libraries │ ├── models/ ... put your model tests │ └── phpunit.xml ... config file for PHPUnit └── vendor/
Baixe ci-phpunit-test
mais recente em https://github.com/kenjis/ci-phpunit-test/releases.
Descompacte e copie a pasta application/tests
para a pasta do seu application
no projeto CodeIgniter.
É isso.
$ cd /caminho/para/codeigniter/$ compositor requer kenjis/ci-phpunit-test:^3.0 --dev
E execute install.php
:
$ php fornecedor/kenjis/ci-phpunit-test/install.php --from-composer
O comando acima sempre substitui os arquivos existentes.
Você deve executá-lo na pasta raiz do projeto CodeIgniter.
Você pode especificar seu application
e pasta public
com argumentos de opção, se usar caminhos de pasta personalizados.
$ php vendor/kenjis/ci-phpunit-test/install.php -a <application_dir> -p <public_dir> -t <unittest_dir>
Então o padrão seria:
$ php vendor/kenjis/ci-phpunit-test/install.php -a aplicação -p public -t aplicação/testes
Mas alguns caminhos podem não estar corretos, nesse caso, corrija-os em testes/Bootstrap.php.
Baixe ci-phpunit-test
mais recente em https://github.com/kenjis/ci-phpunit-test/releases.
Descompacte e substitua a pasta application/tests/_ci_phpunit_test
.
Leia o registro de alterações.
$ cd /caminho/para/codeigniter/$ compositor atualização kenjis/ci-phpunit-test
Leia o registro de alterações.
Se você estiver atualizando de uma versão anterior do ci-phpunit-test
que criou um diretório application/test/_ci_phpunit_test
e agora deseja usar diretamente ci-phpunit-test
do Composer, você tem algumas etapas adicionais:
Exclua o diretório antigo da biblioteca de testes:
$ rm -rf /caminho/para/codeigniter/application/tests/_ci_phpunit_test
Edite o arquivo application/tests/Bootstrap.php
. Na parte inferior da seção "definir as constantes do caminho principal", adicione o seguinte:
define('CI_PHPUNIT_TESTPATH', implodir(DIRECTORY_SEPARATOR, [dirname(APPPATH), 'fornecedor', 'kenjis', 'ci-phpunit-test', 'aplicativo', 'testes', '_ci_phpunit_test'] ).DIRECTORY_SEPARATOR);
E substitua quaisquer referências a __DIR__ . '/_ci_phpunit_test/
ou TESTPATH . '_ci_phpunit_test
com CI_PHPUNIT_TESTPATH . '
. (Então, por exemplo, __DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'
se tornaria CI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'
.)
Você precisa instalar o PHPUnit antes de executar os testes.
Se você usa o Composer:
$ compositor requer phpunit/phpunit --dev
$ cd /path/to/codeigniter/$ vendor/bin/phpunit -c application/tests/PHPUnit 9.5.4 por Sebastian Bergmann e colaboradores.... 3/3 (100%) Tempo: 00:00.102, Memória: 12,00 MBOK (3 testes, 3 asserções)Gerando relatório de cobertura de código no formato Clover XML ... concluído [00:00.002]Gerando código relatório de cobertura em formato HTML... concluído [00:00.012]
Para gerar o relatório de cobertura, é necessário o Xdebug.
Se você quiser executar um único arquivo de caso de teste:
$ fornecedor/bin/phpunit -c aplicação/testes/aplicação/testes/modelos/Category_model_test.php
Por exemplo, uma classe de caso de teste para Inventory_model
seria a seguinte:
<?phpclass Inventory_model_test estende TestCase {public function setUp(): void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }função pública test_get_category_list() {$ esperado = [1 => 'Livro',2 => 'CD',3 => 'DVD', ];$list = $this->obj->get_category_list();foreach ($list as $category) {$this->assertEquals($expected[$category->id], $category->name); } }função pública test_get_category_name() {$actual = $this->obj->get_category_name(1);$expected = 'Livro';$this->assertEquals($expected, $actual); } }
Por exemplo, uma classe de caso de teste para o controlador Welcome seria a seguinte:
<?phpclass Welcome_test estende TestCase {função pública test_index() {$output = $this->request('GET', 'bem-vindo/index');$this->assertStringContainsString('<title>Bem-vindo ao CodeIgniter</title>', $output); } }
Consulte Como escrever testes para obter detalhes.
Consulte Referência de função e classe.
Veja dicas.
Alguns recursos do ci-phpunit-test estão disponíveis nos seguintes pacotes independentes.
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
Aplicativo de teste CodeIgniter para ci-phpunit-test
Instalador do CodeIgniter Composer
Cli para CodeIgniter 3.0
CodeIgniter Twig simples e seguro
Doutrina CodeIgniter
Implantador CodeIgniter
Verificador de nome de arquivo CodeIgniter3
Exemplo de widget CodeIgniter (visualizar parcial)
Controlador com namespace CodeIgniter3