PHPUnit-Skelgen 1.2.0没有创建Namespace

时间:2013-02-04 23:20:32

标签: php testing phpunit

我附加了一个示例类,当我尝试为它生成测试文件时,使用PHP 5.4.11上的PHPUnit-Skelgen 1.2.0,我没有将命名空间添加到文件中,所以测试失败。但是,所有方法都被选中。

源文件:

<?php
namespace lib\Parameters;

class COMMAND_LINE implements \Iterator
{
    private $CommandLineOptions_ = array();

    /**
     * Create the Command Line Options Class
     * @param boolean $AddHelpOption - Optionally add the -h/--help option automatically
     */
    public function __construct($AddHelpOption = TRUE)
    {
        if( $AddHelpOption == TRUE)
        {
        }
    }

    /**
     * An internal pointer to the current position in the Command Line Options
     * @var integer
     */
    protected $Position = 0;

    /**
     * This method takes the pointer back to the beginning of the dataset to restart the iteration
     */
    public function rewind() 
    {
        $this->Position = 0;
    }

    /**
     * This method returns the value at the current position of the dataset
     * @return COMMAND_LINE_OPTION
     */
    public function current()
    {
        return $this->CommandLineOptions_[$this->Position];
    }

    /**
     * Return the current value of the pointer
     * @return integer
     */
    public function key()
    {
        return $this->Position;
    }

    /** 
     * Move the pointer to the next element
     */
    public function next() 
    {
        ++ $this->Position;
    }

    /**
     * Returns where the next item is valid or not
     * @return boolean
     */
    public function valid() 
    {
        return isset($this->CommandLineOptions_[$this->Position]);
    }
}
?>

命令行,当前目录中的类:

>phpunit-skelgen --test -- lib\Parameters\COMMAND_LINE COMMAND_LINE.class COMMAND_LINE_Test COMMAND_LINE.class.test

PHPUnit Skeleton Generator 1.2.0 by Sebastian Bergmann.
Wrote skeleton for "COMMAND_LINE_Test" to "COMMAND_LINE.class.test".

创建的测试类具有函数,但没有命名空间:

<?php
/**
 * Generated by PHPUnit_SkeletonGenerator 1.2.0 on 2013-02-04 at 17:50:23.
 */
class COMMAND_LINE_Test extends PHPUnit_Framework_TestCase
{
    /**
     * @var COMMAND_LINE
     */
    protected $object;

    /**
     * Sets up the fixture, for example, opens a network connection.
     * This method is called before a test is executed.
     */
    protected function setUp()
    {
        $this->object = new COMMAND_LINE;
    }

    /**
     * Tears down the fixture, for example, closes a network connection.
     * This method is called after a test is executed.
     */
    protected function tearDown()
    {
    }

    /**
     * @covers lib\Parameters\COMMAND_LINE::rewind
     * @todo   Implement testRewind().
     */
    public function testRewind()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }

    /**
     * @covers lib\Parameters\COMMAND_LINE::current
     * @todo   Implement testCurrent().
     */
    public function testCurrent()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }

    /**
     * @covers lib\Parameters\COMMAND_LINE::key
     * @todo   Implement testKey().
     */
    public function testKey()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }

    /**
     * @covers lib\Parameters\COMMAND_LINE::next
     * @todo   Implement testNext().
     */
    public function testNext()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }

    /**
     * @covers lib\Parameters\COMMAND_LINE::valid
     * @todo   Implement testValid().
     */
    public function testValid()
    {
        // Remove the following lines when you implement this test.
        $this->markTestIncomplete(
          'This test has not been implemented yet.'
        );
    }
}

从具有相对文件路径的根目录尝试它也不起作用。如果我使用完全限定的命名空间(我不能,因为我需要是相对的),那么找不到类,只找到setUp和tearDown方法。

1 个答案:

答案 0 :(得分:1)

您可以像这样为生成的测试类命名。

>phpunit-skelgen --test -- lib\Parameters\COMMAND_LINE COMMAND_LINE.class lib\Parameters\COMMAND_LINE_Test COMMAND_LINE.class.test