PHPUnit:dataProvider问题
发布时间:2020-12-13 22:19:52 所属栏目:PHP教程 来源:网络整理
导读:以下测试有什么问题: ?phpclass TestSomething extends PHPUnit_Framework_TestCase{ /** * @dataProvider provider */ public function testSomething($array,$expectedResult) { $this-assertEquals($array,$expectedResult); } public function provider
以下测试有什么问题:
<?php class TestSomething extends PHPUnit_Framework_TestCase { /** * @dataProvider provider */ public function testSomething($array,$expectedResult) { $this->assertEquals($array,$expectedResult); } public function provider() { return array( array(array(),array()),); } } ?> 错误信息: $phpunit index.php PHP Warning: Missing argument 1 for TestSomething::testSomething() in /var/www/tests/something-test/index.php on line 8 PHP Warning: Missing argument 2 for TestSomething::testSomething() in /var/www/tests/something-test/index.php on line 8 PHP Notice: Undefined variable: array in /var/www/tests/something-test/index.php on line 11 PHP Notice: Undefined variable: expectedResult in /var/www/tests/something-test/index.php on line 11 PHP Fatal error: Uncaught exception 'PHPUnit_Framework_ExpectationFailedException' with message 'Failed asserting that Array ( [0] => Array ( ) [1] => Array ( ) ) is equal to <string:testSomething>.' in /usr/share/php/PHPUnit/Framework/Constraint/IsEqual.php:164 Stack trace: #0 /usr/share/php/PHPUnit/Framework/Assert.php(2087): PHPUnit_Framework_Constraint_IsEqual->fail(Array,'') #1 /usr/share/php/PHPUnit/Framework/Assert.php(343): PHPUnit_Framework_Assert::assertThat(Array,Object(PHPUnit_Framework_Constraint_IsEqual),'') #2 /var/www/tests/something-test/index.php(11): PHPUnit_Framework_Assert::assertEquals('testSomething',Array) #3 /usr/share/php/PHPUnit/Framework/TestSuite.php(537): TestSomething->testSomething('testSomething',Array,0) #4 /usr/share/php/PHPUnit/Framework/TestSuite.php(816): PHPUnit_Framework_TestSuite::createTest(Object(ReflectionClass),'testSomething') #5 /usr/share/php/PHPUnit/Framework/TestSuite.php(224): PHPUnit_Framework_TestSuite->addTestMethod(Object(ReflectionClass),Object(Reflectio in /usr/share/php/PHPUnit/Framework/Constraint/IsEqual.php on line 164 谢谢. 解决方法
这是因为你的测试也是作为构造函数执行的:
class TestSomething extends PHPUnit_Framework_TestCase { /** * @dataProvider provider */ public function testSomething($array,$expectedResult); } // ... } 对于PHP4兼容性,您可以使用类名作为方法名来声明构造函数.它也是以不区分大小写的方式完成的(即:testSomething()被认为是TestSomething的构造函数).通常,您会将Test关键字附加到类名以防止这种情况发生(而不是预先添加): class SomethingTest extends PHPUnit_Framework_TestCase { // ... } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |