2

単体テストが含まれているphpプロジェクトがあります。開発にNetbeansを使用しており、IDEにphpunitを統合したいと考えています。コマンドラインからphpunitを実行すると、機能しています。Alt + F6を押してNetbeansでテストを実行すると、テストは実行されません。次のメッセージが表示されます。

テストは実行されませんでした(エラーが発生した可能性があります。出力ウィンドウで確認してください)。

構造(これはZend Framework 2モジュールです):

Foo/
  src/
    Foo/
      Bar.php
      Baz.php
  tests/
    Foo/
      BarTest.php
    bootstrap.php
    phpunit.xml
  Module.php
  autoload_register.php

BarTest.phpの内容

namespace Foo;

use PHPUnit_Framework_TestCase as TestCase;

class BarTest extends TestCase
{
    public function testIsWorking ()
    {
        $this->assertTrue(true);
    }
}

私のphpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="bootstrap.php">
    <testsuite name="Foo">
        <directory>./</directory>
    </testsuite>
</phpunit>

私のbootstrap.php:

// Set error reporting pretty high
error_reporting(E_ALL | E_STRICT);

// Get base, application and tests path
define('BASE_PATH',  dirname(__DIR__));

// Load autoloader
require_once BASE_PATH . '/autoload_register.php';

Netbeansプロジェクトのプロパティで、次のことを試しました。

  1. テストディレクトリをに設定するにはFoo/tests(これは必須だと思います)
  2. ブートストラップファイルを具体的に設定するには(必須ではないと思います)
  3. XML構成ファイルを具体的に設定するには(必須ではないと思います)
  4. すべての*テストファイルを実行するように特別に設定するには(必須ではないと思います)

Netbeansがphpunitテストを実行できるようにするにはどうすればよいですか?

4

4 に答える 4

3

これらすべてを PHPUnit の bootstrap.php に入れるだけです。

<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
于 2013-04-10T11:06:02.060 に答える
0

問題は、Netbeans がすべてのテストが 1 つのルート プロジェクト フォルダーにあることを想定していることです。そうしないと、コード カバレッジやその他の機能が正しく動作しません。詳細については、拡張機能を参照してください。

この問題は、カスタム testSuite を作成することで解決できます。

  • まだ作成されていない場合は、ルート プロジェクト フォルダーにディレクトリ "test" または "tests" を作成します。
  • この「テスト」フォルダーにファイル TestSuite.php を作成します
  • この TestSuite.php を Netbeans プロジェクト設定に追加します。
<?php

class TestSuite extends PHPUnit_Framework_TestSuite
{
    public static function suite()
    {
        $suite = new TestSuite();

        $file = '/Foo/tests/Foo/BarTest.php';

        echo 'Adding test: ' . $file . "\n";
        $suite->addTestFile($file);

        //add here algorithm that will search and add all test files from your /tests directory

    return $suite;

}

Netbeans 7.2 には、すべてのテストを別のディレクトリで実行する優れた機能があります。

于 2012-04-15T12:46:43.437 に答える
0

error_reporting を高レベルに設定しましたが、PHP CLI では display_errors がオンになっていませんでした。これで、レポートが戻ってきました...

于 2012-05-17T20:37:47.900 に答える