我有一个包含单元测试的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项目属性中,我尝试了:
Foo/tests
(我认为这是必需的)如何确保Netbeans可以执行我的phpunit测试?
答案 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可以解决这个问题:
<?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文件有自动加载器,然后我的所有测试类都没有错误地执行。