私はlaravelの単体テストに非常に特異な問題があります。私がしようとしているのは基本的な単体テストです。私はテストで一つのクラスを設定しています。テストを実行する単一のメソッドがあるとき、テストは完全に機能しました。クラスは次のようになりました。2つ以上のメソッドを使用すると、LaravelのPHPUnitテストが失敗する
class Pixel_BasicTest extends Illuminate\Foundation\Testing\TestCase {
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
return $app;
}
public function testRoutes(){
echo "Start of testRoutes\n";
//Test all the GET routes we have
$routeCollection = Route::getRoutes();
$num_404s = 0;
$path_404s = [];
...various other code that does some tests, these all work right
}
}
ここで、別の関数を追加しようとすると問題が発生します。私のクラスには、次のようになります。
class Pixel_BasicTest extends Illuminate\Foundation\Testing\TestCase {
public function createApplication()
{
$app = require __DIR__.'/../bootstrap/app.php';
$app->make('Illuminate\Contracts\Console\Kernel')->bootstrap();
return $app;
}
public function testRoutes(){
echo "Start of testRoutes\n";
//Test all the GET routes we have
$routeCollection = Route::getRoutes();
$num_404s = 0;
$path_404s = [];
...various other code that does some tests, these all work right
}
public function testSecondThing() {
echo "Start of testSecondThing";
...some code testing something else
}
}
を今、私は完全に第二の機能を最初の関数でそのコードを入れて、削除した場合、テストが完全に実行するので、私は、第二の機能からのコードが動作することを知っています。私は2番目の関数のコードを入れたときにしかし、それは失敗し、私のターミナルウィンドウは、次のようになります
Mikes-MacBook-Air-96:hq pixelmember$ ./vendor/bin/phpunit -v --debug
PHPUnit 4.8.29 by Sebastian Bergmann and contributors.
Runtime: PHP 5.6.10
Configuration: /Users/pixelmember/Documents/hq/phpunit.xml
Starting test 'Pixel_BasicTest::testRoutes'.
.Start of testRoutes
End of testRoutes
Starting test 'Pixel_BasicTest::testAfterschool'.
Mikes-MacBook-Air-96:hq pixelmember$
あなたが見ることができるように、それは第二の機能を取得し、ちょうど停止したか失敗したか何か。エラーメッセージは表示されず、関数の開始時にコードに書き込んだメッセージも表示されません(echo "Starting testSecondThing()"部分)
私は正直なところ、する。単体テストを使わずに、アプリケーションの他の部分で作業することもできますが、単体テストを1つの機能ですべて実行する必要はありません。
私の役に立つ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="false"
stopOnFailure="false"
syntaxCheck="false">
<testsuites>
<testsuite name="Application Test Suite">
<file>./tests/Pixel_BasicTest.php</file>
</testsuite>
</testsuites>
<filter>
<blacklist>
<directory>./vendor</directory>
</blacklist>
</filter>
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="DB_DATABASE" value="test"/>
<env name="DB_USERNAME" value="root"/>
<env name="DB_PASSWORD" value=""/>
</php>
を私は実際にいくつかのデータベース関連の環境変数を追加する以外に、このファイルの大部分を編集したり、変更していません。
編集:私は実際にそれを考え出した私は私の問題を修正し、FIX