Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bem galera, é o seguinte: estou com um probleminha com o PHPUnit.
O que acontece é que quando eu peço os testes de um diretório, ele não executa, só quando eu especifico qual o arquivo.
Utilizo namespaces e acho que esse é o problema: não sei configurar o framework para elas.
Meu phpunit.xml é esse:
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="public/bootstrap.php"
cacheTokens="true"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
verbose="false">
<testsuites>
<testsuite name="UnitaryTests">
<directory>tests/</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>src/</directory>
</whitelist>
</filter>
</phpunit>tests/
-Application/
--Entity/
---UserTests.php
bootstrap.php:
$composer_autoload_file = '../vendor/autload.php';
if( !file_exists( $composer_autoload_file ) ){
die( 'File not found: ' . $composer_autoload_file );
}
require_once $composer_autoload_file;Obs: Instalei-o pelo Composer, então, se isso interferir em algo, o arquivo composer.json está aqui: http://pastebin.com/yKLYQJij
(Não o coloquei no tópico por ser um espaço ocupado à toa caso não interfira).
[EDIT] Havia me esquecido, o namespace de UserTests.php:
namespace Application\Entity;
Ainda não funcionou, cara.
phpunit tests
//ou
phpunit tests/
//ou
phpunit ./tests/
Nenhum dos 3, só assim:
phpunit tests/Application/Entity/UserTests.php
Ah, então é por causa da forma que você está rodando. Na pasta onde estiver o phpunit.xml, rode simplesmente "phpunit".
O phpunit.xml fica na root, mas mesmo assim, não funciona, sempre me retorna "No tests executed!"
Nunca vi algo assim antes. Mas você está rodando o PHPUnit do Composer? Porque só phpunit executa o da PEAR, para executar o do Composer usa-se vendor/bin/phpunit.
A sua estrutura seria essa?
project/
src/
tests/
vendor/
composer.json
phpunit.xml
Também pode ser que você esteja fora da pasta project no terminal.
Sim, mas consegui com que o phpunit fosse pra root mudando o código-fonte de
#!/usr/bin/env sh
SRC_DIR="pwd"
cd "dirname "$0""
cd "../phpunit/phpunit/composer/bin"
BIN_TARGET="pwd/phpunit"
cd "$SRC_DIR"
"$BIN_TARGET" "$@"
para:
#!/usr/bin/env sh
SRC_DIR="pwd"
cd "dirname "$0""
cd "vendor/phpunit/phpunit/composer/bin"
BIN_TARGET="pwd/phpunit"
cd "$SRC_DIR"
"$BIN_TARGET" "$@"
E sim cara, estou na pasta project. O local do phpunit não muda em nada na execução, porque não importa onde esteja, não funciona :/
Então:
phpunit -c phpunit.xml
Veja se resolve. Estranho..
Sim, estranho, e não resolveu.
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="public/bootstrap.php"
cacheTokens="true"
colors="false"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
verbose="false">