2

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

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

结构(它是 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. 专门设置为运行所有 *Test 文件(我认为不需要)

如何确保 Netbeans 可以执行我的 phpunit 测试?

4

4 回答 4

3

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

<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
于 2013-04-10T11:06:02.060 回答
0

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

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

  • 如果尚未创建,请在根项目文件夹中创建目录“test”或“tests”。
  • 在这个“测试”文件夹中创建文件 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 将具有在单独目录中运行所有测试的好功能。

于 2012-04-15T12:46:43.437 回答
0

尽管我已将 error_reporting 设置为高级别,但 PHP CLI 并没有打开 display_errors。就是这样,所以现在我得到了我的报告……

于 2012-05-17T20:37:47.900 回答
0

NetBeans 找不到自动加载器类。然后,在项目设置中,您必须说出类 autoloader、bootstrap 等。

就我而言,刚刚进入:项目属性-> 测试-> PHPUnit。我将选项设置为“使用引导程序”,并告诉引导程序的路径。

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

于 2014-01-19T22:30:38.347 回答