Test к наименованию тестируемого класса. Например тестируемый класс называется Class, тестирующий — ClassTest.ClassTest наследуется (в большинстве случаев) от PHPUnit_Framework_TestCase.test к наименованиям тестируемых методов.assertEquals()assertEquals() задает соответствие реально полученного значения и ожидаемого.<?php
require_once 'PHPUnit/Framework.php';
class StackTest extends PHPUnit_Framework_TestCase
{
public function testPushAndPop()
{
$stack = array();
$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));
}
}
?>
* This source code was highlighted with Source Code Highlighter.
print или @depends для описания зависимостей между тестами.@depends для описания зависимостейВ этом примере первый тест,<?php
class StackTest extends PHPUnit_Framework_TestCase
{
public function testEmpty()
{
$stack = array();
$this->assertTrue(empty($stack));
return $stack;
}
/**
* @depends testEmpty
*/
public function testPush(array $stack)
{
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertFalse(empty($stack));
return $stack;
}
/**
* @depends testPush
*/
public function testPop(array $stack)
{
$this->assertEquals('foo', array_pop($stack));
$this->assertTrue(empty($stack));
}
}
?>
* This source code was highlighted with Source Code Highlighter.
testEmpty(), создает пустой массив и задает утверждение, что массив пустой. После этого тест возвращает окружение (fixture) в качестве результата. testPush(), зависит от testEmpty() и получает результат работы testEmpty() в качестве аргумента. И наконец, testPop() зависит от testPush(). <?php
class DependencyFailureTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
/**
* @depends testOne
*/
public function testTwo()
{
}
}
?>
* This source code was highlighted with Source Code Highlighter.
phpunit --verbose DependencyFailureTest PHPUnit 3.4.2 by Sebastian Bergmann. DependencyFailureTest FS Time: 0 seconds There was 1 failure: 1) testOne(DependencyFailureTest) Failed asserting that <boolean:false> is true. /home/sb/DependencyFailureTest.php:6 There was 1 skipped test: 1) testTwo(DependencyFailureTest) This test depends on "DependencyFailureTest::testOne" to pass. FAILURES! Tests: 2, Assertions: 1, Failures: 1, Skipped: 1.
@depends.provider(), см. Пример 4.4).@dataProvider.public и должен возвращать массив массивов или объект, поддерживающий интерфейс Iterator, который на каждой итерации возвращает массив.<?php
class DataTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
public function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
}
?>
* This source code was highlighted with Source Code Highlighter.
phpunit DataTest PHPUnit 3.4.2 by Sebastian Bergmann. ...F Time: 0 seconds There was 1 failure: 1) testAdd(DataTest) with data (1, 1, 3) Failed asserting that <integer:2> matches expected value <integer:3>. /home/sb/DataTest.php:21 FAILURES! Tests: 4, Assertions: 4, Failures: 1.
@dataProvider) и одного или нескольких тестов, которые определены как зависимые (@depends), то в первую очередь используется источник данных и только потом другие тесты.@expectedException для тестирования<?php
require_once 'PHPUnit/Framework.php';
class ExceptionTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException InvalidArgumentException
*/
public function testException()
{
}
}
?>
* This source code was highlighted with Source Code Highlighter.
phpunit ExceptionTest PHPUnit 3.4.2 by Sebastian Bergmann. F Time: 0 seconds There was 1 failure: 1) testException(ExceptionTest) Expected exception InvalidArgumentException FAILURES! Tests: 1, Assertions: 1, Failures: 1.
setExpectedException() — это еще один способ указать, что в тестовом методе выбрасывается исключение, см. Пример 4.6.<?php
require_once 'PHPUnit/Framework.php';
class ExceptionTest extends PHPUnit_Framework_TestCase
{
public function testException()
{
$this->setExpectedException('InvalidArgumentException');
}
}
?>
* This source code was highlighted with Source Code Highlighter.
phpunit ExceptionTest PHPUnit 3.4.2 by Sebastian Bergmann. F Time: 0 seconds There was 1 failure: 1) testException(ExceptionTest) Expected exception InvalidArgumentException FAILURES! Tests: 1, Assertions: 1, Failures: 1.
void setExpectedException(string $exceptionName) $exceptionName.String getExpectedException()<?php
require_once 'PHPUnit/Framework.php';
class ExceptionTest extends PHPUnit_Framework_TestCase {
public function testException() {
try {
// ... Code that is expected to raise an exception ...
}
catch (InvalidArgumentException $expected) {
return;
}
$this->fail('An expected exception has not been raised.');
}
}
?>
* This source code was highlighted with Source Code Highlighter.
fail(), (см. catch и тест завершится успешно.<?php
class ExpectedErrorTest extends PHPUnit_Framework_TestCase
{
/**
* @expectedException PHPUnit_Framework_Error
*/
public function testFailingInclude()
{
include 'not_existing_file.php';
}
}
?>
* This source code was highlighted with Source Code Highlighter.
phpunit ExpectedErrorTest PHPUnit 3.4.2 by Sebastian Bergmann. . Time: 0 seconds OK (1 test, 1 assertion)
PHPUnit_Framework_Error_Notice и PHPUnit_Framework_Error_Warning Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.
комментарии (12)