Home » Testing » PHPUnit2 » Bug #5282
Tests get run 3 times
Details
| Submitted | 2005-09-02 17:06 UTC |
|---|---|
| From | jeff dot sawatzky at niltzdesigns dot com |
| Assigned | sebastian |
| Status | Bogus |
| Package | PHPUnit2 |
| PHP Version | 5.0.4 |
| OS | linux |
| Roadmaps | (Not assigned) |
Comments
[2005-09-02 17:06 UTC] jeff dot sawatzky at niltzdesigns dot com
Description:
------------
using PHPUnit2 version 2.2.1
I have 4 classes (Date, Time, DateTime and TimeSpan)
I have 4 test classes (DateTest, TimeTest, DateTimeTest, TimeSpanTest) that have tests that test the methods on the respective classes. DateTest has 5 tests, TimeTest has 5 tests, DateTimeTest has 8 tests, and TimeSpanTest has 6 tests totalling 24 tests all together.
I then have a TestSuite class defined (shown in the test script section below). When I run
When I run $phpunit TestSuite everything runs fine, except the fact that it runs all the tests 3 times resulting in 72 tests being run total.
Test script:
---------------
<?php
require_once "PHPUnit2/Framework/TestSuite.php";
/**
* Test suite class.
*/
class TestSuite extends PHPUnit2_Framework_TestSuite {
public function __construct()
{
parent::__construct();
//add the time class tests to the suite
require_once "time_test.php";
$this->addTestSuite("TimeTest");
//add the date class tests to the suite
require_once "date_test.php";
$this->addTestSuite("DateTest");
//add the datetime class tests to the suite
require_once "datetime_test.php";
$this->addTestSuite("DateTimeTest");
//add the timespan class tests to the suite
require_once "timespan_test.php";
$this->addTestSuite("TimeSpanTest");
}
}
?>
Expected result:
----------------
PHPUnit 2.2.1 by Sebastian Bergmann.
.........................................
...............................
Time: 0.10421204566956
OK (24 tests)
Actual result:
--------------
PHPUnit 2.2.1 by Sebastian Bergmann.
.........................................
...............................
Time: 0.10421204566956
OK (72 tests)
[2005-10-15 07:53 UTC] sebastian at php dot net
I was able to reproduce this issue but have not found a fix yet.
You should circumvent this issue by setting up your TestSuite object in a more standard way (look at http://cvs.php.net/pear/PHPUnit2/Tests/ for an example of how to organize a test suite with PHPUnit2). The way you're doing it is not encouraged (nor supported at this time).
[2005-12-31 07:28 UTC] sebastian at php dot net
Assume we have the following two sourcefiles:
FooSuite.php
<?php
require_once 'FooTest.php';
class FooSuite extends PHPUnit2_Framework_TestSuite {
public function __construct() {
parent::__construct();
$this->addTestSuite('TimeTest');
}
}
?>
FooTest.php
<?php
class FooTest extends PHPUnit2_Framework_TestCase {
public function testSomething() {
$this->assertEquals(TRUE, FALSE);
}
}
?>
Running PHPUnit results in
$ phpunit FooSuite
PHPUnit 3.0.0-dev by Sebastian Bergmann.
Time: 00:00
OK (0 tests)
and
PHPUnit 3.0.0-dev by Sebastian Bergmann.
F
Time: 00:00
There was 1 failure:
1) testSomething(FooTest)
failed asserting that <false> is equal to <boolean:true>
expected bool <true>
got bool <false>
/home/sb/FooTest.php:4
FAILURES!
Tests: 1, Failures: 1.
You need to change the FooSuite class as follows
FooSuite.php
<?php
require_once 'FooTest.php';
class FooSuite {
public static function suite() {
$suite = new PHPUnit2_Framework_TestSuite;
$suite->addTestSuite('FooTest');
return $suite;
}
}
?>
to achieve what you want
$ phpunit FooSuite
PHPUnit 3.0.0-dev by Sebastian Bergmann.
F
Time: 00:00
There was 1 failure:
1) testSomething(FooTest)
failed asserting that <false> is equal to <boolean:true>
expected bool <true>
got bool <false>
/home/sb/FooTest.php:4
FAILURES!
Tests: 1, Failures: 1.