私は単体テストで初心者です。私はdocumentationを読んで同じことをしようとする。TestCaseTraitでPHPUnitを使用する方法
まず第一に、私は次の環境を持っている:
$ php -v
PHP 7.0.15-1+deb.sury.org~trusty+1 (cli) (built: Jan 20 2017 09:16:11) (NTS)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies with Zend OPcache v7.0.15-1+deb.sury.org~trusty+1, Copyright (c) 1999-2017, by Zend Technologies
$ cat composer.json
...
"require-dev": {
"phpunit/phpunit": "^6.0",
"phpunit/dbunit": "^3.0"
},
...
私は/ srcに、/テスト及び/ベンダーのディレクトリを持っています。 Composerオートローダーは完璧に動作します。
私のPHPプロジェクトは、MySQLデータベースと密接に結びついています。私が望むのは、これらの機能を単体テストするだけです。
$ cat tests/phpunit.xml
<phpunit>
<php>
<ini name="display_errors" value="On" />
<ini name="display_startup_errors" value="On" />
</php>
</phpunit>
とテスト:罰金
$ cat tests/SimpleTest.php
<?php
use PHPUnit\Framework\TestCase;
use PHPUnit\DbUnit\TestCaseTrait;
require_once(__DIR__.'/../vendor/autoload.php');
class SimpleTest extends TestCase
{
// use TestCaseTrait;
protected function getConnection() {}
protected function getDataSet() {}
public function testFirstExample()
{
$this->assertEquals(1, 1);
}
public function testSecondExample()
{
$this->assertEquals(1, 0);
}
}
?>
$ phpunit --testdox --verbose --configuration=tests/phpunit.xml tests/SimpleTest.php
PHPUnit 6.0.6 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.15-1+deb.sury.org~trusty+1
Configuration: /home/ubuntu/workspace/tests/phpunit.xml
Simple
[x] First example
[ ] Second example
すべてと私はラインuse TestCaseTrait;
のコメントを解除するまで、期待通りに動作します。この瞬間から、テストは機能しません。 テスト機能の中で実行されていません(次のコードを追加してチェックしました:fwrite(STDERR, 'Here we are!')
)。
質問:use TestCaseTrait;
で何が問題になっていますか?なぜテスト全体が壊れたのですか?どうすれば解決できますか?
ありがとうございました! P.P.私の英語には申し訳ありません。
結論: それは奇妙ですが、問題はsetUp()
機能していました。あなたはテストでそれを追加する必要があります!私がしたとき、私のテストは正常に動作しました...
これがあなたの問題であるかどうかわかりませんが、[phpunit doc](https://phpunit.de/manual/current/en/database.html)を見ると、 'getConnection'と' getDataSet'は何かを返すべきです。彼らはあなたの例では無効です。 – k0pernikus
もちろん私はそれを試しました。これらの関数はそれぞれ '$ this-> createDefaultDBConnection($ pdo、 'test');' と 'new MyApp_DbUnit_ArrayDataSet(配列(...))' を返します。しかし、それは何も変わらない... – GHopper