我遇到了一些问题。
如果我根据以下类创建测试方法:
<?php
class Calc
{
/**
* @assert (0, 0) == 0
* @assert (0, 1) == 1
*/
public function add($a, $b)
{
return $a + $b;
}
}
...然后我得到:
<?php
/**
* Generated by PHPUnit_SkeletonGenerator on 2015-09-07 at 10:34:19.
*/
require_once '../Calc.php';
class CalcTest extends PHPUnit_Framework_TestCase {
/**
* @var Calc
*/
protected $object;
protected function setUp() {
$this->object = new Calc;
}
protected function tearDown() {
}
/**
* Generated from @assert (0, 0) == 0.
*
* @covers Calc::add
* @group production
*/
public function testAdd() {
$this->assertEquals(
0
, $this->object->add(0, 0)
);
}
/**
* Generated from @assert (0, 1) == 1.
*
* @covers Calc::add
* @group production
* @group development
*/
public function testAdd2() {
$this->assertEquals(
1
, $this->object->add(0, 1)
);
}
}
......这很酷。它就像一个魅力。
但是如果我想在另一个类中使用注释@assertRegExp(expectedRegex,string pattern):
<?php
class RegexExample {
private $input;
public function __construct() {}
/**
* @assertRegExp ('/^[0-9]*$/', $this->object->setDigit('Mowgli'))
* @assertRegExp ('/^[0-9]*$/', $this->object->setDigit('79579534'))
*/
public function setDigit($inp) {
$this->input= $inp;
}
}
...当我创建测试方法时,现在生成了测试类,但它没有实现测试方法:
<?php
/**
* Generated by PHPUnit_SkeletonGenerator on 2015-09-18 at 13:22:27.
*/
class RegexExampleTest extends PHPUnit_Framework_TestCase {
/**
* @var User
*/
protected $object;
protected function setUp() {
$this->object = new User;
}
protected function tearDown() {
}
/**
* @covers User::setDigit
* @todo Implement testSetDigit().
*/
public function testSetDigit() {
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}
重点是得到像这样的测试方法:
public function testSetDigit() {
$this->assertRegExp(
'/^[0-9]*$/'
, $this->object->setDigit('Mowgli')
);
}
...哪个有效,但如果我想做fx n数字af测试方法,我宁愿在我自己的对象类中使用注释,而不是复制/粘贴和编辑方法。
如果我找到解决方案,我会在这里发布。
我是phpunit的菜鸟,所以可能是我做的一个蹩脚的菜鸟错误。如果是这样,请提前预约。
提前谢谢。答案 0 :(得分:0)
我想知道你从哪里知道@assertRegexp是一个有效的断言注释。我搜索了子项目的存储库&#34; PHPUnit SkeletonGenerator&#34;并且未找到任何暗示您可以使用正则表达式的引用:https://github.com/sebastianbergmann/phpunit-skeleton-generator/search?p=1&q=assert&type=Code&utf8=%E2%9C%93
此外,您的断言注释没有意义。这些注释旨在提供工作单元测试断言。首先,您测试的函数不返回任何内容,因此没有值可以使用正则表达式。其次,你没有提供一种方法来表明字符串的正则表达式断言&#34; Mowgli&#34;应该失败 - 至少是我对这个案子的期望。
请记住,功能的可用性或缺少取决于您使用的版本,因此请指出您正在使用的PHPUnit版本和骨架生成器。