????????о? PHP ????????????ж? PHP ?????????????????????? PHP ?????????????????????????????????????????????????????? PHP ?????????е?????????Щ?????????????е????
???????????? PHP??????????????????Щ???????????????????????????????????????????????????????????????????????α????????á?
????????????????????????飬???????????????????????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????? phpunit ??? ???? ??
???????????????? composer ?????????????? composer ????ɡ?
?????????????
????$ composer require phpunit/phpunit -vvv
????????? phpunit??bin ???????????? vendor/bin ???£?????? phpunit ?? ??? php vendor/bin/phpunit ??в?????
???????? bin ??:
????{
????"config": {
????"bin": "bin"
????}
????}
???????? bin ??????????????? php bin/phpunit ???????????
????phpunit ???????????????·??????????????? phpunit.xml.dist ???? phpunit.xml ??????????:
<phpunit
colors="true"
bootstrap="./vendor/autoload.php"
>
<testsuites>
<testsuite>
<directory>dir1</directory>
</testsuite>
<testsuite>
<directory>dir2</directory>
</testsuite>
</testsuites>
</phpunit>
?????????????????????????????y???????ж??????????????
???????????
??????? PHPUnit ????????????????:
<?php
class DemoTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = [];
$this->assertEquals(0?? count($stack));
array_push($stack?? 'foo');
$this->assertEquals('foo'?? $stack[count($stack)-1]);
$this->assertEquals(1?? count($stack));
$this->assertEquals('foo'?? array_pop($stack));
$this->assertEquals(0?? count($stack));
}
}
????????????? *Test ??β????? PHPUnit_Framework_TestCase ????????????????? test ???????????????????????
????????ò???????? "????"????????????????????????????????????????????????????????????????????????????????????????????2?????????
??????????????÷?????????????: PHPUnit
?????????
????????????????????? PHPUnit ??????????????????????????? setUp ?????????????????????????????????г?????Щ?????????????
?????????????
??????????????????????????????????????????????????????????????????????????? ??????????????????????? ???????????????????????????
???????:
????1??composer ?У??? --no-dev ??????????????????????????????????????????????????????????????????????????????????????к???????????????е?????????????????????
????2??dbunit ??β???????????????????????????£????ò?????????????composer --no-dev ???????????????????У????????????????????????
????3????????????????????Щ??????????????????????????????????????????????????????????????????????????в????OK?????????????????????????????????????Щ???????????????????????
????$ composer require phpunit/dbunit -vvv
?????????????: ????????
<?php
class DBTest extends PHPUnit_Extensions_Database_TestCase
{
/**
* @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
*/
public function getConnection()
{
$pdo = new PDO('mysql::dbname=test;host=127.0.0.1'?? 'user'?? 'pass');
return $this->createDefaultDBConnection($pdo?? ':memory:');
}
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
public function getDataSet()
{
return $this->createFlatXMLDataSet(dirname(__FILE__).'/_files/guestbook-seed.xml');
}
}
????getConnection ?????????????????????????????????????????????????????????? PHPUnit_Extensions_Database_DB_IDatabaseConnection ???????????????д?????ɡ?
????getDataSet ????????????????????????????????????????????????????е??????????????????????????????Σ??????????????????????????????????????????????? truncate ???????????
??????????????????????????????????飬yml??xml??????????????????????????????????????????: ????
??????н?? php vendor/bin/phpunit
???????????????????????????????Щ???????????
???????????????????????
????????????£??????????ν??????????????? phpunit ???????????????????????????????????????????????????????????????????Ч????
????????phpunit ???????????????(???????????????????????????д???ɡ?????)??????????????????????????????????
<?php
abstract class MyApp_Tests_DatabaseTestCase extends PHPUnit_Extensions_Database_TestCase
{
// ?????? pdo ??Σ??????????????????????
static private $pdo = null;
// ?????????????????? PHPUnit_Extensions_Database_DB_IDatabaseConnection ???
private $conn = null;
final public function getConnection()
{
if ($this->conn === null) {
if (self::$pdo == null) {
self::$pdo = new PDO('mysql::dbname=test;host=127.0.0.1'?? 'user'?? 'pass');
}
$this->conn = $this->createDefaultDBConnection(self::$pdo?? ':memory:');
}
return $this->conn;
}
}
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????д??????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????·???????ɡ?