2012-04-12 14 views
2

私はユニットテストを含むPHPプロジェクトを持っています。私は開発のためにNetbeansを使用し、IDEでphpunitの統合をしたいと考えています。私がコマンドラインからphpunitを実行すると、動作しています。 私はテストがを実行していないNetBeansでテストを実行するにはAltキー+ F6キーを押すと、私はメッセージを取得する:Netbeans "no tests executed"

ませテストが実行されていない(おそらく、エラーが発生し、出力ウィンドウに確認してください。)

namespace Foo; 

use PHPUnit_Framework_TestCase as TestCase; 

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

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

内容量:構造(これは、Zendフレームワーク2モジュールです)

マイphpunit.xml:

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

私のbootstrap.phpの:私が試したNetBeansプロジェクトのプロパティで

// 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'; 

  1. Foo/testsにテストディレクトリを設定するには(この私は思う)
  2. 具体的にブートストラップファイルを設定する(必要ないすべての*テストファイルを実行するために具体的に設定するには、具体的XML設定ファイル(私は考える必要はありません)
  3. を設定するには、K)
  4. (私は考える必要はありません)

どのように私は、NetBeansが実行できることを確認することができます私のphpunitテスト?

+0

'phpunit --bootstrap bootstrap.php Foo/tests'を実行しようとしましたか? IDEが最終的に何をするのか –

答えて

0

error_reportingを高レベルに設定しましたが、PHP CLIでdisplay_errorsが有効になっていませんでした。これはそれだったので、私は報告を取り戻しました...

+0

これが何を意味するのか、どうすればいいのか説明できますか? 'おそらくエラーが発生しました、出力ウィンドウで確認してください。 'というエラーが表示されます。私はPHPUnitTestを初めて導入しました。 – Geek

+0

bootstrap.phpファイルに 'error_reporting(E_ALL | E_STRICT);は含まれていますが' ini_set( 'display_errors'、 '1'); 'は含まれていません。したがって、エラーは報告されたものの、表示されませんでした。これも設定すると、エラーが表示されました。 –

+0

ありがとうございます。このbootstrap.phpファイルはどこにあるはずですか?私は検索結果に非常に多くのbootstrap.phpファイルを取得し、どのファイルを変更するべきかわからない。 – Geek

0

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

この問題は、カスタムテストスイートを作成し解決することができます:それはまだ作成されていない場合

  • は、ルートプロジェクトフォルダにディレクトリ「テスト」または「テスト」を作成します。
  • この「test」フォルダに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はrun all test in separate directoryに便利な機能を持っています。

3

これをすべてあなたのPHPUnitブートストラップに入れることができます。PHP:

<?php 

error_reporting(E_ALL | E_STRICT); 
ini_set('display_errors', '1'); 
ini_set('display_startup_errors', '1'); 
0

NetBeansでオートローダークラスが見つかりません。プロジェクトの設定では、クラスのオートローダー、ブートストラップなどを教えてください。

私の場合、プロジェクトプロパティ - >テスト - > PHPUnitです。 "Use Bootstrap"にオプションを設定し、ブートストラップのパスを伝えました。

私のブートストラップファイルにオートローダーがあると、すべてのテストクラスがエラーなく実行されました。