Current File : //proc/self/root/home/itiffy/public_html/vendor/phpunit/phpunit/tests/Framework/SuiteTest.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.
*/
namespace PHPUnit\Framework;
class SuiteTest extends TestCase
{
/**
* @var TestResult
*/
private $result;
protected function setUp()
{
$this->result = new TestResult;
}
public static function suite()
{
$suite = new 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('testDoNotSkipInheritedClass'));
return $suite;
}
public function testAddTestSuite()
{
$suite = new TestSuite(\OneTestCase::class);
$suite->run($this->result);
$this->assertCount(1, $this->result);
}
public function testInheritedTests()
{
$suite = new TestSuite(\InheritedTestCase::class);
$suite->run($this->result);
$this->assertTrue($this->result->wasSuccessful());
$this->assertCount(2, $this->result);
}
public function testNoTestCases()
{
$suite = new TestSuite(\NoTestCases::class);
$suite->run($this->result);
$this->assertNotTrue($this->result->wasSuccessful());
$this->assertEquals(0, $this->result->failureCount());
$this->assertEquals(1, $this->result->warningCount());
$this->assertCount(1, $this->result);
}
public function testNoTestCaseClass()
{
$this->expectException(Exception::class);
new TestSuite(\NoTestCaseClass::class);
}
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 TestSuite(\NotPublicTestCase::class);
$this->assertCount(2, $suite);
}
public function testNotVoidTestCase()
{
$suite = new TestSuite(\NotVoidTestCase::class);
$this->assertCount(1, $suite);
}
public function testOneTestCase()
{
$suite = new TestSuite(\OneTestCase::class);
$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 TestSuite(\OverrideTestCase::class);
$suite->run($this->result);
$this->assertCount(1, $this->result);
}
public function testBeforeClassAndAfterClassAnnotations()
{
$suite = new TestSuite(\BeforeClassAndAfterClassTest::class);
\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 TestSuite(\BeforeClassWithOnlyDataProviderTest::class);
\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 TestSuite(\BeforeAndAfterTest::class);
\BeforeAndAfterTest::resetProperties();
$test->run();
$this->assertEquals(2, \BeforeAndAfterTest::$beforeWasRun);
$this->assertEquals(2, \BeforeAndAfterTest::$afterWasRun);
}
public function testTestWithAnnotation()
{
$test = new TestSuite(\TestWithTest::class);
\BeforeAndAfterTest::resetProperties();
$result = $test->run();
$this->assertCount(4, $result->passed());
}
public function testSkippedTestDataProvider()
{
$suite = new TestSuite(\DataProviderSkippedTest::class);
$suite->run($this->result);
$this->assertEquals(3, $this->result->count());
$this->assertEquals(1, $this->result->skippedCount());
}
public function testTestDataProviderDependency()
{
$suite = new TestSuite(\DataProviderDependencyTest::class);
$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 TestSuite(\DataProviderIncompleteTest::class);
$suite->run($this->result);
$this->assertEquals(3, $this->result->count());
$this->assertEquals(1, $this->result->notImplementedCount());
}
public function testRequirementsBeforeClassHook()
{
$suite = new TestSuite(\RequirementsClassBeforeClassHookTest::class);
$suite->run($this->result);
$this->assertEquals(0, $this->result->errorCount());
$this->assertEquals(1, $this->result->skippedCount());
}
public function testDoNotSkipInheritedClass()
{
$suite = new 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);
}
}