|
|
|
|
|
Esta página descreve a utilização da ferramenta PHPUnit para testes de plugins Wordpress e faz parte do [Catálogo do LabES](../home).
|
|
|
|
|
|
|
|
|
## O que é?
|
|
|
|
|
|
O PHPUnit é um framework para realização de testes unitários em PHP com base na arquitetura xUnit.
|
|
|
|
|
|
|
|
|
## Quando se aplica?
|
|
|
|
|
|
Quando o desenvolvedor quer criar testes automatizados que leva em consideração a menor unidade do software, ou seja, ao invés de testar dentro do código fonte e executar o código manualmente para imprimir o resultado na tela, o programador cria um projeto de teste, que executa cada trecho do código de forma automática e exibe o resultado de todos os testes.
|
|
|
|
|
|
|
|
|
## Como instalar?
|
|
|
|
|
|
Como o PHPUnit não é exclusivo para uso com o wordpress, ele demanda algumas ferramentas para sua instalação e funcionamento.
|
|
|
|
|
|
### Pré-requisitos
|
|
|
|
|
|
- Mysql-server
|
|
|
- PHP
|
|
|
- SVN
|
|
|
- Wordpress
|
|
|
- [WP-CLI](https://make.wordpress.org/cli/handbook/guides/installing/)
|
|
|
- [Composer](https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos)
|
|
|
|
|
|
Nota: Usuários linux para instalação do SVN e do Composer respectivamente, utilize os seguintes comandos:
|
|
|
|
|
|
```bash
|
|
|
sudo apt install subversion -y
|
|
|
```
|
|
|
|
|
|
```bash
|
|
|
sudo apt install composer -y
|
|
|
```
|
|
|
|
|
|
### Instalando o PHPUnit
|
|
|
|
|
|
Vá ao diretório do plugin que você quer testar:
|
|
|
|
|
|
```bash
|
|
|
cd /var/www/html/your-wordpress/wp-content/plugins/your-plugin/
|
|
|
```
|
|
|
|
|
|
Crie o `composer.json` caso não exista, com o seguinte comando:
|
|
|
|
|
|
```bash
|
|
|
sudo composer init
|
|
|
```
|
|
|
|
|
|
Adicione o PHPUnit e a biblioteca auxiliar Polyfills:
|
|
|
|
|
|
```bash
|
|
|
sudo composer require --dev phpunit/phpunit
|
|
|
```
|
|
|
|
|
|
```bash
|
|
|
sudo composer require --dev yoast/phpunit-polyfills
|
|
|
```
|
|
|
|
|
|
## Como usar/aplicar?
|
|
|
|
|
|
Ainda no diretório do seu plugin `/your-plugin`, gere os arquivos de teste:
|
|
|
|
|
|
```bash
|
|
|
wp scaffold plugin-tests your-plugin
|
|
|
```
|
|
|
|
|
|
Este comando vai gerar todos os arquivos necessários para rodar os testes. Dentro do diretório `/tests` é criado um arquivo 'test-sample.php' exemplificando um teste simples, e é nesse diretório que deve ser criado os arquivos de teste para cada classe existente em seu `/src`.
|
|
|
|
|
|
Inicialize o ambiente de teste:
|
|
|
|
|
|
```bash
|
|
|
bash bin/install-wp-tests.sh test_database_name mysql_user_name 'mysql_user_password' database_host_name wp_version
|
|
|
```
|
|
|
|
|
|
Nota: Esse 'test_database_name' deve ser criado e utilizado somente para testes, pois ele pode ser deletado.
|
|
|
|
|
|
Exemplo:
|
|
|
|
|
|
```bash
|
|
|
bash bin/install-wp-tests.sh db_test_wp labes 'labes' localhost
|
|
|
```
|
|
|
|
|
|
Uma ultima coisa, em seu arquivo `your-plugin/tests/bootstrap.php` cole nas primeiras linhas:
|
|
|
|
|
|
```bash
|
|
|
require dirname( dirname( __FILE__ ) ) . '/vendor/yoast/phpunit-polyfills/phpunitpolyfills-autoload.php';
|
|
|
```
|
|
|
Pronto, agora só executar o phpunit
|
|
|
|
|
|
```bash
|
|
|
./vendor/bin/phpunit
|
|
|
```
|
|
|
|
|
|
ou
|
|
|
|
|
|
```bash
|
|
|
phpunit
|
|
|
```
|
|
|
|
|
|
## Lições aprendidas a partir do uso no LabES
|
|
|
|
|
|
Para fazer esta instalação no sistema operacional Windows, deve-se lembrar de atualizar a variavel 'PATH' a todo momento.
|
|
|
|
|
|
A partir do uso do PHPUnit no contexto do LabES, temos as seguintes dicas para compartilhar:
|
|
|
|
|
|
### Crie a classe e seu teste com os nomes quase iguais:
|
|
|
|
|
|
Caso você tenha uma classe `Your_Class` e queira testa-la, crie dentro da pasta `tests` um arquivo de teste com a classe `Your_ClassTest` com os métodos de teste.
|
|
|
|
|
|
### Existem muitas formas de testar seu plugin, neste link existem exemplos de utilização das funções do PHPUnit:
|
|
|
|
|
|
https://www.devmedia.com.br/teste-unitario-com-phpunit/41231
|
|
|
|
|
|
|
|
|
## Referências
|
|
|
|
|
|
- https://sarathlal.com/unit-testing-wordpress-plugin-using-phpunit/
|
|
|
- https://maheshwaghmare.com/wordpress/blog/phpunit-tests/?expand_article=1
|
|
|
|
|
|
|
|
|
## Autores(as)
|
|
|
|
|
|
- @abraaosantos |
|
|
\ No newline at end of file |