質問

既存のコードでphpunitを試し始めたところです。使用する命名規則では、MyClassクラスはMyClass.class.phpにある必要があります。 PHPUnitでは、ファイルの名前をMyClass.phpにする必要があるようです。

これを回避する方法はありますか?

スケルトンテストクラスを生成しようとしているときに気付きました:

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
役に立ちましたか?

解決

これは要件ではなく、単なる仮定です。独自のテストケースを作成できます。

スケルトンは、「簡単な方法」でモックアップを作成します。これにより、すべてのクラスのダミー関数がダミー関数になります。

また、

phpunit --skeleton-test MyClass  MyClass.class.php

あなたがしたいことをするかもしれません。

   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.

その理由により、クラスがどのファイルにあるかを伝えないと推測しようとしますが、クラスがどのファイルにあるかを伝えれば推測しません。

他のヒント

スケルトンが生成されるクラスが名前空間になっているときに、同様の問題に出くわしました。コマンドラインからphpunit 3.5.6を使用しています。 phpUnitのドキュメントの例は私にとってはうまくいかず、オンラインで答えを見つけることができなかったので、ここでそれを共有すると思いました。ディレクトリ/ my / dir内にクラスFooがあり、クラスファイルへのフルパスが/my/dir/Foo.phpである単一のファイルFoo.phpで宣言されているとします

また、Fooが次のように宣言されているとします:

<?php

namespace my\space;
class Foo
{
    ...
}

テストスケルトンを生成するには、Foo.phpが存在するディレクトリにいることを確認してから、次のコマンドを実行しました。

user[/my/dir]$ phpunit --skeleton-test my\\dir\\Foo Foo.php

これでスケルトンが生成されました。キーはバックスラッシュをエスケープすることでした。phpUnitのドキュメントでは名前空間に言及していますが、バックスラッシュは1つしか示していません。これが誰かの助けになることを願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top