web-dev-qa-db-ja.com

PHPUnit-構成ファイルを使用すると「テストは実行されませんでした」

問題

コードの品質を向上させるために、最高のテストソリューションではなく、単体テストを使用してコードをテストする方法を学ぶことにしました。

私は、一般的なデータベース機能を実現できる個人ライブラリ用にcomposerを使用してPHPUnitをインストールすることにしました。最初はPHPUnitの設定ファイルがなく、次のようなコマンドを実行したとき:

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

これは端末コマンドであるため、.php拡張機能を含めなかったことに注意してください。上記のGeneralStringFunctionsTestは、実際にはGeneralStringFunctionsTest.phpファイルです。

出力は私が期待したものです:

時間:31ミリ秒、メモリ:2.75Mb

OK(1テスト、1アサーション)

次に、毎回手動でファイルを入力する代わりに、構成ファイルを使用してテストスイートを自動的にロードしようとしました。ルートディレクトリにphpunit.xmlというファイルを作成し、ファイルに次のように入力しました。 http://Pastebin.com/0j0L4WBD

<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
    <testsuites>
        <testsuite name="Tests">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

さて、コマンドを実行すると:

phpunit

次の出力が得られます。

Sebastian Bergmannおよび寄稿者によるPHPUnit 4.5.0。

/Users/muyiwa/Projects/DatabaseHelper/phpunit.xmlから読み取った構成

時間:16ミリ秒、メモリ:1.50Mb

テストは実行されませんでした!

役に立つ場合には、私のディレクトリ構造は次のとおりです。
src-最上位ディレクトリ(すべてのソースコードを含む)
tests-最上位ディレクトリ(すべてのテストがmysrcフォルダーと同じ構造になっています)
vendor-Composerサードパーティファイル

composer jsonファイルとロックファイル、およびファイルとして最上位にphpunit xmlファイルもあります。

試したこと

  • phpunit.xmlのディレクトリをtests/GeneralStringFunctionsに変更する
  • phpunit.xmlのディレクトリを./testsに変更する
  • phpunit.xmlファイルをtestsディレクトリに移動し、ディレクトリをtestsではなく./に変更します。
  • phpunit.xmlのディレクトリタグにサフィックス属性を追加して、明示的なサフィックスとして「テスト」を指定します。
71
Muyiwa Olu

価値がある(遅刻している)ために、単純なWebサイト用の新しいLaravel 5.1プロジェクトを作成しているときに、最近これに遭遇しました。私はそれをデバッグしようとしましたが、試したときに混乱しました:

php artisan make:test homeTest

(trueがtrueであるとアサートするデフォルトのテストがあります)

そして、出力を見ました

No tests executed!

最終的に私にとって問題となったのは、私のPHPインストールに関連していました。「phpunit」はグローバルに登録および設定が異なりましたが、Laravelインストールに付属するphpunitは正しく、完璧に走りました。

したがって、修正プログラムはベンダーの構成済みphpunitを実行しています(app /およびtests /と同じルートディレクトリから)。

./vendor/bin/phpunit

それが他の誰かを助けることを願っています!

160
RoboBear

XMLファイルはそのままで問題ありません。ただし、tests/フォルダー内のPHPファイルの名前が次のようになっていることを確認する必要があります。

tests/Test.php <---大文字の「T」に注意してください
tests/user Test.php
tests/fooBar Test.php
等。

ファイル名は「Test.php」で終わる必要があります。これは、PHPUnitがディレクトリ内で探しているものです。

さらに、すべてのテストメソッドには、「test」で始まる名前が必要です。

public function testFooBar()
{
    // Your test code
}

お役に立てば幸いです!

79
Lionel

Windowsでは、ターミナルで次のコマンドを使用します

.\vendor\bin\phpunit

コマンドの場合

phpunit

「テストは実行されていません!」を返します

macで

./vendor/bin/phpunit

それが役に立てば幸い。

12
Ndong Akwo

仮想マシンのPHPUnitをバージョン6に更新した後も、同じ問題が発生しました。--debugと--verboseでも、有用なことは何も言わず、「テストは実行されませんでした」だけです。最終的に、新しいバージョンではクラスと名前空間が変更され、古いクラスへの参照を含むファイルを実行したくなかったことが判明しました。私にとっての修正は、すべてのテストケースでこれを置き換えることでした:

class MyTestCase extends \PHPUnit_Framework_TestCase {...}

で:

use PHPUnit\Framework\TestCase;

class MyTestCase extends TestCase {...}
10
igors

ベンダーファイルから呼び出すだけでよい

vendor\bin\phpunit Notice\Not /

4
Hamza Zymawy

-debug(ちなみに良い方法)を使用してファイル名がそうではないという単純な事実を発見する前に、10分間髪を引っ張りました命名規則を尊重します、最後に余分な「s」がありました。

違う

CreateAdminTests

CreateAdminTest

このメモが誰かに役立つことを願っています

3
chebaby

PHPSTORMを使用している場合は、設定に移動してから

  • Test Frameworks

    [+]をクリックして選択します

  • PHPUnit Localその後
  • Use Composer Auto Loaderその後、スクリプトフィールドへのパスにこのように貼り付けます
  • C:\{YOUR PROJECT NAME}\vendor\autoload.php
  • oKをクリック
  • HAPPY TESTING
2
Tahseen Alaa

私はこれが非常に古いことを認識していますが、それは私にも起こりました。これが誰かの助けになることを願っています。

私の問題は、/ ** @test * /で「@」記号を忘れたことです。

違う:

/** test */
function a_thread_can_be_deleted()
{
    ...
}

右:

/** @test */
function a_thread_can_be_deleted()
{
    ...
}
2
AlmostPitt

Phpunit.xmlファイルにテストスイートを追加しましたか?

<phpunit>
    <testsuite name="app1" >
        <directory>./</directory>
    </testsuite>
</phpunit>

そこに複数のディレクトリを追加できます。

1
Aine

多分少しですが、もしあなたが(私のように)VagrantでLaravelを使用している場合は、「windows side」ではなく、vagrantボックス内でphpunitを実行していることを確認してください。 :)

0
martinethyl

テストが実行されていない!の同じ問題がありました。同じ名前のfileclass nameを維持することで解決しました。

0
Asif

私にとって、phpunit --debugを使用すると、どのテストが実行されていないかがわかりました。

$this->visit('/')
         ->see('Laravel');

ディレクトリは.htaccess認証で保護されていたため、ページにアクセスできなかったと思います

私にとっての解決策は、このテストを実行することでした(または、.htaccess認証を実行する可能性が高い)。

0
relipse

うまくセットアップされていても、テストが実行されないという問題がありました。

原因は、ネームスペースがファイルの最初のコマンドではなく、いくつかのdocブロックコメントの後だったためです。

復帰すると、phpunitはテストを表示して正しく実行されました。

0
pgee70

これは非常に遅いですが、誰かの助けになることを願っています。

絶対参照を使用してテストを実行しました。フォルダー構造[project/tests/test.php]

私のディレクトリ行は次のようになりました./tests/test.php

0
Codebender

私は少し面白かった。

php artisan make:testを使用したときに、誤って。phpを入れたProductRewardPointController.phpのようにProductRewardPointController.php.phpphpunitは単に無視しました。

余分な。phpを削除し、通常の状態に戻します

0