270 lines
9.2 KiB
PHP
270 lines
9.2 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of PHPUnit.
|
|
*
|
|
* (c) Sebastian Bergmann <sebastian@phpunit.de>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeAndAfterTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeClassAndAfterClassTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'TestWithTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeClassWithOnlyDataProviderTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderSkippedTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderDependencyTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderIncompleteTest.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'InheritedTestCase.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCaseClass.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCases.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotPublicTestCase.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotVoidTestCase.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'OverrideTestCase.php';
|
|
require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'RequirementsClassBeforeClassHookTest.php';
|
|
|
|
class Framework_SuiteTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
protected $result;
|
|
|
|
protected function setUp()
|
|
{
|
|
$this->result = new PHPUnit_Framework_TestResult;
|
|
}
|
|
|
|
public static function suite()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite;
|
|
|
|
$suite->addTest(new self('testAddTestSuite'));
|
|
$suite->addTest(new self('testInheritedTests'));
|
|
$suite->addTest(new self('testNoTestCases'));
|
|
$suite->addTest(new self('testNoTestCaseClass'));
|
|
$suite->addTest(new self('testNotExistingTestCase'));
|
|
$suite->addTest(new self('testNotPublicTestCase'));
|
|
$suite->addTest(new self('testNotVoidTestCase'));
|
|
$suite->addTest(new self('testOneTestCase'));
|
|
$suite->addTest(new self('testShadowedTests'));
|
|
$suite->addTest(new self('testBeforeClassAndAfterClassAnnotations'));
|
|
$suite->addTest(new self('testBeforeClassWithDataProviders'));
|
|
$suite->addTest(new self('testBeforeAnnotation'));
|
|
$suite->addTest(new self('testTestWithAnnotation'));
|
|
$suite->addTest(new self('testSkippedTestDataProvider'));
|
|
$suite->addTest(new self('testTestDataProviderDependency'));
|
|
$suite->addTest(new self('testIncompleteTestDataProvider'));
|
|
$suite->addTest(new self('testRequirementsBeforeClassHook'));
|
|
$suite->addTest(new self('testDontSkipInheritedClass'));
|
|
|
|
return $suite;
|
|
}
|
|
|
|
public function testAddTestSuite()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'OneTestCase'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertCount(1, $this->result);
|
|
}
|
|
|
|
public function testInheritedTests()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'InheritedTestCase'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertTrue($this->result->wasSuccessful());
|
|
$this->assertCount(2, $this->result);
|
|
}
|
|
|
|
public function testNoTestCases()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'NoTestCases'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertTrue(!$this->result->wasSuccessful());
|
|
$this->assertEquals(0, $this->result->failureCount());
|
|
$this->assertEquals(1, $this->result->warningCount());
|
|
$this->assertCount(1, $this->result);
|
|
}
|
|
|
|
/**
|
|
* @expectedException PHPUnit_Framework_Exception
|
|
*/
|
|
public function testNoTestCaseClass()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite('NoTestCaseClass');
|
|
}
|
|
|
|
public function testNotExistingTestCase()
|
|
{
|
|
$suite = new self('notExistingMethod');
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(0, $this->result->errorCount());
|
|
$this->assertEquals(1, $this->result->failureCount());
|
|
$this->assertCount(1, $this->result);
|
|
}
|
|
|
|
public function testNotPublicTestCase()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'NotPublicTestCase'
|
|
);
|
|
|
|
$this->assertCount(2, $suite);
|
|
}
|
|
|
|
public function testNotVoidTestCase()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'NotVoidTestCase'
|
|
);
|
|
|
|
$this->assertCount(1, $suite);
|
|
}
|
|
|
|
public function testOneTestCase()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'OneTestCase'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(0, $this->result->errorCount());
|
|
$this->assertEquals(0, $this->result->failureCount());
|
|
$this->assertCount(1, $this->result);
|
|
$this->assertTrue($this->result->wasSuccessful());
|
|
}
|
|
|
|
public function testShadowedTests()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'OverrideTestCase'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertCount(1, $this->result);
|
|
}
|
|
|
|
public function testBeforeClassAndAfterClassAnnotations()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'BeforeClassAndAfterClassTest'
|
|
);
|
|
|
|
BeforeClassAndAfterClassTest::resetProperties();
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(1, BeforeClassAndAfterClassTest::$beforeClassWasRun, '@beforeClass method was not run once for the whole suite.');
|
|
$this->assertEquals(1, BeforeClassAndAfterClassTest::$afterClassWasRun, '@afterClass method was not run once for the whole suite.');
|
|
}
|
|
|
|
public function testBeforeClassWithDataProviders()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'BeforeClassWithOnlyDataProviderTest'
|
|
);
|
|
|
|
BeforeClassWithOnlyDataProviderTest::resetProperties();
|
|
$suite->run($this->result);
|
|
|
|
$this->assertTrue(BeforeClassWithOnlyDataProviderTest::$setUpBeforeClassWasCalled, 'setUpBeforeClass method was not run.');
|
|
$this->assertTrue(BeforeClassWithOnlyDataProviderTest::$beforeClassWasCalled, '@beforeClass method was not run.');
|
|
}
|
|
|
|
public function testBeforeAnnotation()
|
|
{
|
|
$test = new PHPUnit_Framework_TestSuite(
|
|
'BeforeAndAfterTest'
|
|
);
|
|
|
|
BeforeAndAfterTest::resetProperties();
|
|
$result = $test->run();
|
|
|
|
$this->assertEquals(2, BeforeAndAfterTest::$beforeWasRun);
|
|
$this->assertEquals(2, BeforeAndAfterTest::$afterWasRun);
|
|
}
|
|
|
|
public function testTestWithAnnotation()
|
|
{
|
|
$test = new PHPUnit_Framework_TestSuite(
|
|
'TestWithTest'
|
|
);
|
|
|
|
BeforeAndAfterTest::resetProperties();
|
|
$result = $test->run();
|
|
|
|
$this->assertCount(4, $result->passed());
|
|
}
|
|
|
|
public function testSkippedTestDataProvider()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite('DataProviderSkippedTest');
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(3, $this->result->count());
|
|
$this->assertEquals(1, $this->result->skippedCount());
|
|
}
|
|
|
|
public function testTestDataProviderDependency()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite('DataProviderDependencyTest');
|
|
|
|
$suite->run($this->result);
|
|
|
|
$skipped = $this->result->skipped();
|
|
$lastSkippedResult = array_pop($skipped);
|
|
$message = $lastSkippedResult->thrownException()->getMessage();
|
|
|
|
$this->assertContains('Test for DataProviderDependencyTest::testDependency skipped by data provider', $message);
|
|
}
|
|
|
|
public function testIncompleteTestDataProvider()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite('DataProviderIncompleteTest');
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(3, $this->result->count());
|
|
$this->assertEquals(1, $this->result->notImplementedCount());
|
|
}
|
|
|
|
public function testRequirementsBeforeClassHook()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'RequirementsClassBeforeClassHookTest'
|
|
);
|
|
|
|
$suite->run($this->result);
|
|
|
|
$this->assertEquals(0, $this->result->errorCount());
|
|
$this->assertEquals(1, $this->result->skippedCount());
|
|
}
|
|
|
|
public function testDontSkipInheritedClass()
|
|
{
|
|
$suite = new PHPUnit_Framework_TestSuite(
|
|
'DontSkipInheritedClass'
|
|
);
|
|
|
|
$dir = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Inheritance' . DIRECTORY_SEPARATOR;
|
|
|
|
$suite->addTestFile($dir . 'InheritanceA.php');
|
|
$suite->addTestFile($dir . 'InheritanceB.php');
|
|
$result = $suite->run();
|
|
$this->assertCount(2, $result);
|
|
}
|
|
}
|