Всем привет. Возникла проблема, в гугле не нашел подобного.
Цитата |
1) Warning The data provider specified for FooTest::testBar is invalid. Undefined offset: 0 |
class FooTest extends PHPUnit_Framework_TestCase {
public static $objects = array();
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
self::$objects = array(
new Exception('foo'),
new Exception('bar')
);
}
/**
* @dataProvider provider
*/
public function testBar($o)
{
$this->assertTrue(true);
}
public function provider()
{
return array(
array(self::$objects[0])
);
}
public static function tearDownAfterClass()
{
self::$objects = array();
parent::tearDownAfterClass();
}
}
class FooTest extends PHPUnit_Framework_TestCase {
public static $object = null;
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
self::$object = new Exception('foo');
}
/**
* @dataProvider provider
*/
public function testBar($o)
{
$this->assertTrue(true);
}
public function provider()
{
return array(
array(self::$object)
);
}
public static function tearDownAfterClass()
{
self::$object = null;
parent::tearDownAfterClass();
}
}
class FooTest extends PHPUnit_Framework_TestCase {
public static $data = array();
public static function setUpBeforeClass()
{
parent::setUpBeforeClass();
self::$data = array('val');
}
/**
* @dataProvider provider
*/
public function testBar($o)
{
$this->assertTrue(true);
}
public function provider()
{
return array(
array(self::$data[0])
);
}
public static function tearDownAfterClass()
{
self::$data = array();
parent::tearDownAfterClass();
}
}
Цитата |
Сделай для начало print_r(self::$data[0]); |
Цитата |
А что ты хочешь создать? Как ты вызываешь? |
if(empty(self::$data)){
self::setUpBeforeClass();
}
public static function setUpBeforeClass()
{
echo __METHOD__ . "\n";
parent::setUpBeforeClass();
self::$data = array('val');
}
/**
* @dataProvider provider
*/
public function testBar($o)
{
$this->assertTrue(true);
}
public function provider()
{
echo __METHOD__ . "\n";
return array(
array(self::$data[0])
);
}
parent::setUpBeforeClass();
Цитата |
Чтобы не гадать,используйте обычный "дебагер"(в eclipe очень удобный дебагер). Так Вы пошагам увидите почему массив пустой,и что его таким делает. ;) |
Цитата |
Возжно после строчки parent::setUpBeforeClass(); массиву вообще не присваеваетя значение,до него просто не доходит. |
class FooTest extends PHPUnit_Framework_TestCase {
public static $data = array();
public static function setUpBeforeClass()
{
echo __METHOD__ . "\n";
parent::setUpBeforeClass();
self::$data = array('val');
}
/**
* @dataProvider provider
*/
public function testBar($o)
{
$this->assertTrue(true);
}
public function provider()
{
echo __METHOD__ . "\n";
return array(
array(self::$data[0])
);
}
public static function tearDownAfterClass()
{
self::$data = array();
parent::tearDownAfterClass();
}
}
Цитата |
FooTest::provider PHPUnit 3.6.10 by Sebastian Bergmann. FooTest::setUpBeforeClass F.............................................................. 63 / 112 ( 56%) .............SSSSSSSS........................... Time: 6 seconds, Memory: 10.25Mb There was 1 failure: 1) Warning The data provider specified for FooTest::testBar is invalid. Undefined offset: 0 C:\php\phpunit:46 FAILURES! Tests: 104, Assertions: 829, Failures: 1, Skipped: 8. |