3 * This file is part of PHPUnit.
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
11 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeAndAfterTest.php';
12 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'BeforeClassAndAfterClassTest.php';
13 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'TestWithTest.php';
14 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderSkippedTest.php';
15 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'DataProviderIncompleteTest.php';
16 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'InheritedTestCase.php';
17 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCaseClass.php';
18 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NoTestCases.php';
19 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotPublicTestCase.php';
20 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'NotVoidTestCase.php';
21 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'OverrideTestCase.php';
22 require_once dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'RequirementsClassBeforeClassHookTest.php';
25 * @since Class available since Release 2.0.0
26 * @covers PHPUnit_Framework_TestSuite
28 class Framework_SuiteTest extends PHPUnit_Framework_TestCase
32 protected function setUp()
34 $this->result = new PHPUnit_Framework_TestResult;
37 public static function suite()
39 $suite = new PHPUnit_Framework_TestSuite;
41 $suite->addTest(new self('testAddTestSuite'));
42 $suite->addTest(new self('testInheritedTests'));
43 $suite->addTest(new self('testNoTestCases'));
44 $suite->addTest(new self('testNoTestCaseClass'));
45 $suite->addTest(new self('testNotExistingTestCase'));
46 $suite->addTest(new self('testNotPublicTestCase'));
47 $suite->addTest(new self('testNotVoidTestCase'));
48 $suite->addTest(new self('testOneTestCase'));
49 $suite->addTest(new self('testShadowedTests'));
50 $suite->addTest(new self('testBeforeClassAndAfterClassAnnotations'));
51 $suite->addTest(new self('testBeforeAnnotation'));
52 $suite->addTest(new self('testTestWithAnnotation'));
53 $suite->addTest(new self('testSkippedTestDataProvider'));
54 $suite->addTest(new self('testIncompleteTestDataProvider'));
55 $suite->addTest(new self('testRequirementsBeforeClassHook'));
56 $suite->addTest(new self('testDontSkipInheritedClass'));
61 public function testAddTestSuite()
63 $suite = new PHPUnit_Framework_TestSuite(
67 $suite->run($this->result);
69 $this->assertEquals(1, count($this->result));
72 public function testInheritedTests()
74 $suite = new PHPUnit_Framework_TestSuite(
78 $suite->run($this->result);
80 $this->assertTrue($this->result->wasSuccessful());
81 $this->assertEquals(2, count($this->result));
84 public function testNoTestCases()
86 $suite = new PHPUnit_Framework_TestSuite(
90 $suite->run($this->result);
92 $this->assertTrue(!$this->result->wasSuccessful());
93 $this->assertEquals(1, $this->result->failureCount());
94 $this->assertEquals(1, count($this->result));
98 * @expectedException PHPUnit_Framework_Exception
100 public function testNoTestCaseClass()
102 $suite = new PHPUnit_Framework_TestSuite('NoTestCaseClass');
105 public function testNotExistingTestCase()
107 $suite = new self('notExistingMethod');
109 $suite->run($this->result);
111 $this->assertEquals(0, $this->result->errorCount());
112 $this->assertEquals(1, $this->result->failureCount());
113 $this->assertEquals(1, count($this->result));
116 public function testNotPublicTestCase()
118 $suite = new PHPUnit_Framework_TestSuite(
122 $this->assertEquals(2, count($suite));
125 public function testNotVoidTestCase()
127 $suite = new PHPUnit_Framework_TestSuite(
131 $this->assertEquals(1, count($suite));
134 public function testOneTestCase()
136 $suite = new PHPUnit_Framework_TestSuite(
140 $suite->run($this->result);
142 $this->assertEquals(0, $this->result->errorCount());
143 $this->assertEquals(0, $this->result->failureCount());
144 $this->assertEquals(1, count($this->result));
145 $this->assertTrue($this->result->wasSuccessful());
148 public function testShadowedTests()
150 $suite = new PHPUnit_Framework_TestSuite(
154 $suite->run($this->result);
156 $this->assertEquals(1, count($this->result));
159 public function testBeforeClassAndAfterClassAnnotations()
161 $suite = new PHPUnit_Framework_TestSuite(
162 'BeforeClassAndAfterClassTest'
165 BeforeClassAndAfterClassTest::resetProperties();
166 $suite->run($this->result);
168 $this->assertEquals(1, BeforeClassAndAfterClassTest::$beforeClassWasRun, '@beforeClass method was not run once for the whole suite.');
169 $this->assertEquals(1, BeforeClassAndAfterClassTest::$afterClassWasRun, '@afterClass method was not run once for the whole suite.');
172 public function testBeforeAnnotation()
174 $test = new PHPUnit_Framework_TestSuite(
178 BeforeAndAfterTest::resetProperties();
179 $result = $test->run();
181 $this->assertEquals(2, BeforeAndAfterTest::$beforeWasRun);
182 $this->assertEquals(2, BeforeAndAfterTest::$afterWasRun);
185 public function testTestWithAnnotation()
187 $test = new PHPUnit_Framework_TestSuite(
191 BeforeAndAfterTest::resetProperties();
192 $result = $test->run();
194 $this->assertEquals(4, count($result->passed()));
197 public function testSkippedTestDataProvider()
199 $suite = new PHPUnit_Framework_TestSuite('DataProviderSkippedTest');
201 $suite->run($this->result);
203 $this->assertEquals(3, $this->result->count());
204 $this->assertEquals(1, $this->result->skippedCount());
207 public function testIncompleteTestDataProvider()
209 $suite = new PHPUnit_Framework_TestSuite('DataProviderIncompleteTest');
211 $suite->run($this->result);
213 $this->assertEquals(3, $this->result->count());
214 $this->assertEquals(1, $this->result->notImplementedCount());
217 public function testRequirementsBeforeClassHook()
219 $suite = new PHPUnit_Framework_TestSuite(
220 'RequirementsClassBeforeClassHookTest'
223 $suite->run($this->result);
225 $this->assertEquals(0, $this->result->errorCount());
226 $this->assertEquals(1, $this->result->skippedCount());
229 public function testDontSkipInheritedClass()
231 $suite = new PHPUnit_Framework_TestSuite(
232 'DontSkipInheritedClass'
235 $dir = dirname(__DIR__) . DIRECTORY_SEPARATOR . '_files' . DIRECTORY_SEPARATOR . 'Inheritance' . DIRECTORY_SEPARATOR;
237 $suite->addTestFile($dir . 'InheritanceA.php');
238 $suite->addTestFile($dir . 'InheritanceB.php');
239 $result = $suite->run();
240 $this->assertEquals(2, count($result));