2012-04-12 2 views
2

У меня есть проект php с включенными модульными тестами. Я использую Netbeans для разработки и хотел бы иметь phpunit-интеграцию в моей среде IDE. Если я запустил phpunit из командной строки, он работает. Если я нажимаю Alt + F6 для запуска тестов в Netbeans тестов не работают, я получаю сообщение: (. Произошла Возможно, ошибка, проверьте в окне вывода)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. Чтобы установить специально, чтобы запустить все * Тестовые файлы (не требуется, я думаю)

Как я могу обеспечить Netbeans может выполнить мои тесты phpunit?

+0

Вы пытаетесь запустить 'phpunit --bootstrap bootstrap.php Foo/tests'? Потому что это то, что IDE в конечном итоге делает –

ответ

0

Хотя я установил error_reporting на высокий уровень, в PHP CLI не было включено display_errors. Так оно и было, так что теперь я получил свое сообщение обратно ...

+0

Можете ли вы объяснить, что это значит и как я могу это сделать? Я также получаю «Возможно, произошла ошибка, проверьте в окне« Выходное окно ». Я совершенно не знаком с PHPUnitTest. – Geek

+0

Файл bootstrap.php включает 'error_reporting (E_ALL | E_STRICT);' но не 'ini_set ('display_errors', '1');'. Поэтому, хотя сообщалось об ошибках, они не отображались. Установка этого тоже показала мне ошибки. –

+0

Благодарим за отзыв. Можете ли вы сказать мне, где я должен найти этот файл bootstrap.php? Я получаю так много файлов bootstrap.php в результатах поиска и не знаю, к какому я должен внести изменения. – Geek

0

Проблема заключается в том, что Netbeans ожидает, что все тесты находятся в одной папке проекта root. Если это не так, функции Code Coverage и другие функции работают некорректно. См. enhancement для получения дополнительной информации.

Эта проблема может быть решена созданием пользовательских Тестов:

  • Создание каталога «тест» или «испытания» в папку проекта корня, если он еще не создан.
  • Создать файл TestSuite.php в этой папке «test»
  • Добавьте этот TestSuite.php в свои настройки проекта Netbeans.
<?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.

3

Вы можете просто положить все это в свой загрузочный блок PHPUnit.php:

<?php 

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

NetBeans не находит классы автозагрузчика. Затем в настройках проекта вы должны сказать, что класс автозагрузчика, бутстрап и т. Д.

В моем случае только что вошли: Свойства проекта -> Тестирование -> PHPUnit. Я установил опцию «Использовать Bootstrap» и сказал путь к бутстрапу.

В моем загрузочном файле есть автозагрузчик, тогда все мои тестовые классы выполнялись без ошибок.

Смежные вопросы