PHPUnit convenções de nomeação de arquivo
-
08-07-2019 - |
Pergunta
Eu estou apenas começando a experimentar phpunit em algum código existente. A convenção de nomenclatura que usamos é que a classe MyClass deve estar em MyClass.class.php. PHPUnit parece exigir que o arquivo deve ser chamado Minhaclasse.php.
Existe alguma maneira de contornar isso?
Eu notei que ao tentar gerar uma classe de teste esqueleto:
phpunit --skeleton-test MyClass.class
PHPUnit 3.3.4 by Sebastian Bergmann.
Could not find class "MyClass.class" in "/home/jd/skeleton/classes/MyClass.class.php".
Fatal error: Call to a member function getOutClassName() on a non-object in /usr/share/php/PHPUnit/TextUI/Command.php on line 470
Solução
A sua não é um requisito, é apenas assumptive. Você pode escrever seus próprios estudos de casos.
Skeleton só faz um mock-up one "o caminho mais fácil" que faz com que funções binárias para todas as suas classes fictícios funções.
Além disso,
phpunit --skeleton-test MyClass MyClass.class.php
Pode fazer o que quiser.
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>
--skeleton-class Generate Unit class for UnitTest in UnitTest.php.
--skeleton-test Generate UnitTest class for Unit in Unit.php.
então por esse raciocínio, se você não dizer que o arquivo da classe está em ele vai tentar adivinhar, se você dizer o que o arquivo classe se encontra, ele não vai adivinhar.
Outras dicas
Eu corri com um problema semelhante quando a classe um esqueleto está sendo gerado para se namespaced. Estou usando phpunit 3.5.6 a partir da linha de comando. O exemplo a documentação phpunit não funcionou para mim e eu não conseguia encontrar a resposta on-line por isso achei que partilhá-la aqui. Suponha que você tem classe Foo diretório dentro / my / dir e é declarada em um único arquivo foo.php assim o caminho completo para o arquivo de classe é /my/dir/Foo.php
Também supor que Foo é declarado o seguinte:
<?php
namespace my\space;
class Foo
{
...
}
A fim de gerar um teste esqueleto tenho a certeza que eu estava no diretório onde reside foo.php e então eu corri o seguinte comando:
user[/my/dir]$ phpunit --skeleton-test my\\dir\\Foo Foo.php
Isso chamou meu esqueleto para gerar. A chave estava escapando a barra invertida como a documentação do PHPUnit menciona namespaces mas mostra apenas uma barra invertida. Espero que isso ajude alguém.