3

いくつかの既存のコードで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
4

2 に答える 2

7

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

Skeletonは、すべてのクラスのダミー関数をダミー関数にする「簡単な方法」のモックアップを作成します。

また、

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.

したがって、その理由から、クラスがどのファイルにあるかを教えないと推測を試み、クラスがどのファイルにあるかを教えても推測しません。

于 2008-11-14T10:50:40.760 に答える
0

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

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

<?php

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

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

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

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

于 2011-01-31T16:13:14.680 に答える