2016-03-29 16 views
1

目的に合うようにカスタム作成された不透明箱で開発中です。 PHPUnitのバージョンは5.2.12、Laravelのバージョンは5.2.22です。

私はphpunitコマンドを実行していたとき、私は次のエラーを取得:以下

PHPUnit_Framework_Exception: PHPUnit_Framework_TestCase::$name must not be null. 

コード

私phpunit.xmlコンテンツである:したがって、基本的

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit backupGlobals="false" 
     backupStaticAttributes="false" 
     bootstrap="bootstrap/autoload.php" 
     colors="true" 
     convertErrorsToExceptions="true" 
     convertNoticesToExceptions="true" 
     convertWarningsToExceptions="true" 
     processIsolation="true" 
     stopOnFailure="false" 
     stderr="true"> 
    <testsuites> 
     <testsuite name="Application Test Suite"> 
      <directory>./tests/</directory> 
     </testsuite> 
    </testsuites> 
    <filter> 
     <whitelist> 
      <directory suffix=".php">app/</directory> 
     </whitelist> 
    </filter> 
    <php> 
     <env name="APP_ENV" value="testing"/> 
     <env name="CACHE_DRIVER" value="array"/> 
     <env name="SESSION_DRIVER" value="array"/> 
     <env name="QUEUE_DRIVER" value="sync"/> 
    </php> 
</phpunit> 
+0

おそらく、ここにコードを追加する必要があります。 phpunit.xmlであり、テスト自体である可能性があります。 '$ name'はクラス名の後に自動的に[TestCase constructor](https://github.com/sebastianbergmann/phpunit/blob/5.2.12/src/Framework/TestCase.php#L275)に割り当てられます。 –

+0

それを手伝ってもらえますか? @AlexBlex –

+0

コードなしで私は推測できます。助けにならないgithub https://github.com/laravel/laravel/releasesにはLaravel v 5.2.22はありません。 –

答えて

3

問題を上書きされた__constructメソッドでした:

class TestCase extends Illuminate\Foundation\Testing\TestCase 
{ 
    public function __construct() 
    { 
     //some code which should not be there 
    } 
} 

コンストラクタの削除後に例外が発生しました。

+0

あなたの答えは –

+0

ですなぜコンストラクタを実装する必要がありますか? 'setUp'や' setUpBeforeClass'メソッドを使う方が良いでしょう。 – gontrollez

+0

@gontrollez、そうです、必要はありません。申し訳ありませんが答えから明らかでない場合。より良い文言は高く評価されます。 –

1

コンストラクタを削除するだけで、エラーを回避できます。解決しないでください。問題はPHPUnit_Framework_TestCaseクラスを拡張していることです。このクラスには、public function __construct($ name = null、array $ data = []、$ dataName = '')というシグネチャを持つコンストラクタがあります。 問題を確認しますか?それは$ name、$ data、$ dataNameを期待しています。

ので、コンストラクタを削除しますが、このようにそれを書き換えないでください:

public function __construct($name = null, array $data = [], $dataName = '') { 
    parent::__construct($name, $data, $dataName); 

    // your constructor code goes here. 
} 

私は同じ問題を抱えていたし、これは完全にそれを解決しました。

関連する問題