PHPUnitManual:14.1
Jump to navigation
Jump to search
- 14.1 Cover 대상 메소드의 지정
@covers 선언 (annotation) ( Table B.1 "Cover 대상 메소드를 지정하기 위한 선언" 를 참조하세요) 를 사용하면, 해당 테스트 메소드가 어떤 메소드를 테스트할지를 지정할 수 있습니다. 이를 지정하면, 지정한 메소드의 Code coverage 정보만을 고려합니다.
예14.2 "대상 메소드를 지정한 테스트" 가 그 예입니다.
예14.2 대상 메소드를 지정한 테스트
<?php
require_once 'BankAccount.php';
class BankAccountTest extends PHPUnit_Framework_TestCase
{
protected $ba;
protected function setUp()
{
$this->ba = new BankAccount;
}
/**
* @covers BankAccount::getBalance
*/
public function testBalanceIsInitiallyZero()
{
$this->assertEquals(0, $this->ba->getBalance());
}
/**
* @covers BankAccount::withdrawMoney
*/
public function testBalanceCannotBecomeNegative()
{
try {
$this->ba->withdrawMoney(1);
}
catch (BankAccountException $e) {
$this->assertEquals(0, $this->ba->getBalance());
return;
}
$this->fail();
}
/**
* @covers BankAccount::depositMoney
*/
public function testBalanceCannotBecomeNegative2()
{
try {
$this->ba->depositMoney(-1);
}
catch (BankAccountException $e) {
$this->assertEquals(0, $this->ba->getBalance());
return;
}
$this->fail();
}
/**
* @covers BankAccount::getBalance
* @covers BankAccount::depositMoney
* @covers BankAccount::withdrawMoney
*/
public function testDepositWithdrawMoney()
{
$this->assertEquals(0, $this->ba->getBalance());
$this->ba->depositMoney(1);
$this->assertEquals(1, $this->ba->getBalance());
$this->ba->withdrawMoney(1);
$this->assertEquals(0, $this->ba->getBalance());
}
}
?>
특정 테스트에 대해, 어떤 메소드도 테스트하지 않도록 지정할 수도 있습니다. 이 경우에는 @coversNothing 선언을 사용할 수 있습니다 ( "@coversNothing" 을 참조하세요). 결합 테스트를 작성하는 도중에, 하나의 단위 테스트에 대한 Code coverage 를 생성할 때 유용합니다.
예14.3 어떤 메소드도 테스트하지 않도록 지정된 테스트
<?php
class GuestbookIntegrationTest extends PHPUnit_Extensions_Database_TestCase
{
/**
* @coversNothing
*/
public function testAddEntry()
{
$guestbook = new Guestbook();
$guestbook->addEntry("suzy", "Hello world!");
$queryTable = $this->getConnection()->createQueryTable(
'guestbook', 'SELECT * FROM guestbook'
);
$expectedTable = $this->createFlatXmlDataSet("expectedBook.xml")
->getTable("guestbook");
$this->assertTablesEqual($expectedTable, $queryTable);
}
}
?>