Testando erros, warnings e notices do PHP

Categoria: PHPUnit
Publicado em 18 de Julho de 2013

Para testar se o código gera erro, warning ou notices de PHP, as exceptions PHPUnit_Framework_Error, PHPUnit_Framework_Error_Warning e PHPUnit_Framework_Error_Notice podem ser utilizadas. 

O código abaixo gera erro, pois tentar incluir um arquivo que não existe:

1
2
3
4
5
6
7
8
9
10
11
12

class ErroEsperadoTest extends PHPUnit_Framework_TestCase {
 
    /**
     * @expectedException PHPUnit_Framework_Error
     */
    public function testFalhaDeInclusao() {
        include 'arquivo_que_nao_existe.php';
    }
 
}
?>

O operador de supressão de erros pode ser usado para detectar e suprimir notices geradas por algumas funções do PHP:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

 
class SupressaoErrosTest extends PHPUnit_Framework_TestCase {
    public function testGravacaoArquivo() {
        $writer = new FileWriter;
        $this->assertFalse(@$writer->write('/is-not-writeable/file', 'stuff'));
    }
}
class FileWriter {
    public function write($file, $content) {
        $file = fopen($file, 'w');
        if($file == false) {
            return false;
        }
        // ...
    }
}
?>

O código acima retorna '.' (OK) e possui função dupla. Ele detecta por notices (linha 6) verificando o resultado com o método assertFalse() e suprime a exception PHPUnit_Framework_Error_Notice que seria gerada caso o @ não tivesse sido usado.


 

Copyright © Fernando Hidemi Uchiyama 2010 - Todos os direitos reservados