Netbeans“没有执行任何测试”

时间:2012-04-12 14:44:00

标签: php unit-testing netbeans phpunit

我有一个包含单元测试的php项目。我使用Netbeans进行开发,并希望在我的IDE中使用phpunit集成。如果我从命令行运行phpunit,它正在工作。 如果我按Alt + F6在Netbeans中运行测试没有运行测试,我收到消息:

  

未执行任何测试(可能发生错误,请在“输出”窗口中进行验证。)

结构(它是Zend Framework 2模块):

Foo/
  src/
    Foo/
      Bar.php
      Baz.php
  tests/
    Foo/
      BarTest.php
    bootstrap.php
    phpunit.xml
  Module.php
  autoload_register.php

BarTest.php的内容

namespace Foo;

use PHPUnit_Framework_TestCase as TestCase;

class BarTest extends TestCase
{
    public function testIsWorking ()
    {
        $this->assertTrue(true);
    }
}

我的phpunit.xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="bootstrap.php">
    <testsuite name="Foo">
        <directory>./</directory>
    </testsuite>
</phpunit>

我的bootstrap.php:

// Set error reporting pretty high
error_reporting(E_ALL | E_STRICT);

// Get base, application and tests path
define('BASE_PATH',  dirname(__DIR__));

// Load autoloader
require_once BASE_PATH . '/autoload_register.php';

在Netbeans项目属性中,我尝试了:

  1. 将测试目录设置为Foo/tests(我认为这是必需的)
  2. 专门设置引导程序文件(我认为不是必需的)
  3. 专门设置XML配置文件(我认为不是必需的)
  4. 专门设置运行所有*测试文件(我认为不是必需的)
  5. 如何确保Netbeans可以执行我的phpunit测试?

4 个答案:

答案 0 :(得分:3)

您可以将所有这些放入PHPUnit bootstrap.php中:

<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');

答案 1 :(得分:0)

问题是Netbeans希望所有测试位于一个根项目文件夹中。如果没有这样做,代码覆盖率和其他功能无法正常工作。 有关更多信息,请参阅enhancement

创建自定义testSuite可以解决这个问题:

  • 如果尚未创建目录,请在根项目文件夹中创建目录“test”或“tests”。
  • 在此“test”文件夹中创建文件TestSuite.php
  • 在Netbeans项目设置中添加此TestSuite.php。
<?php

class TestSuite extends PHPUnit_Framework_TestSuite
{
    public static function suite()
    {
        $suite = new TestSuite();

        $file = '/Foo/tests/Foo/BarTest.php';

        echo 'Adding test: ' . $file . "\n";
        $suite->addTestFile($file);

        //add here algorithm that will search and add all test files from your /tests directory

    return $suite;

}

Netbeans 7.2对run all test in separate directory具有很好的功能。

答案 2 :(得分:0)

虽然我已将error_reporting设置为高级别,但PHP CLI未启用display_errors。就是这样,所以现在我回复了报告......

答案 3 :(得分:0)

NetBeans没有找到自动加载器类。然后,在项目设置中,您必须说出类自动加载器,引导程序等等。

在我的情况下刚刚进入:项目属性 - &gt;测试 - &gt; PHPUnit的。 我将选项设置为“Use Bootstrap”,并告诉引导程序的路径。

我的bootstrap文件有自动加载器,然后我的所有测试类都没有错误地执行。