Как остановить PHPUnit от добавления включенных / обязательных файлов в рамках тестового набора? - PullRequest
3 голосов
/ 13 февраля 2011

Я пытался следовать руководству PHPUnit о том, как настроить набор тестов с пользовательским порядком выполнения теста.Теперь я понял, что мне нужны только эти строки и некоторые включения для работы набора:

public static function suite()
{
    $suite = new PHPUnit_Framework_TestSuite('Package');
    return $suite;
}

Но когда я использую вышеупомянутые строки, порядок выполнения теста определяется порядком сортировки моих включений.И когда я пытаюсь изменить его с помощью suite (), как следует, тесты выполняются дважды, сначала в порядке сортировки, как определено suite (), а затем в порядке сортировки include:

public static function suite()
{
    $suite = new PHPUnit_Framework_TestSuite('Package');
    $suite->addTestSuite('Package_Class1Test');
    $suite->addTestSuite('Package_Class2Test');
    $suite->addTestSuite('Package_Class3Test');
    return $suite;
}

Включения выполняются:

require_once 'Package/Class3Test.php';
require_once 'Package/Class2Test.php';
require_once 'Package/Class1Test.php';

Результат (порядок выполнения теста):

1) Class1Test
2) Class2Test
3) Class3Test
4) Class3Test
5) Class2Test
6) Class1Test

Я использую Netbeans 7.0beta для запуска PHP 5.3.5 / PHPUnit 3.5.11 в Windows7. Я прочитал руководство по phpunit (http://www.phpunit.de/manual/3.5/en/organizing-tests.html), но понятия не имею, что я делаю неправильно ...

Пожалуйста, помогите.

PS: эту проблему можно решить путем автозагрузки классов.

Ответы [ 2 ]

1 голос
/ 20 июня 2015

PHPUnit 3.5 был выпущен пять лет назад и не поддерживается четыре года.Но даже пять лет назад использование PHPUnit_Framework_TestSuite объектов для создания набора тестов больше не считалось хорошей практикой.

Пожалуйста, прочитайте статью Getting Started на веб-сайте PHPUnit, а также главу организация тестов в руководстве по PHPUnit, чтобы узнать, как правильно организовать ваш набор тестов.

0 голосов
/ 13 февраля 2011

Вы звоните phpunit с правильными параметрами?

У меня есть эта настройка, которая отлично работает с наборами.

/tests/
/tests/allTests.php
/tests/lib/
/tests/lib/libAllTests.php
/tests/lib/baseTest.php
/tests/lib/coreTest.php
/tests/lib/...

allTests.php:

require_once 'lib/libAllTests.php';
class AllTests
{
    public static function suite()
    {
        $suite = new PHPUnit_Framework_TestSuite('Project'); 
        $suite->addTestSuite('LibAllTests');     
        return $suite;
    }
}

libAllTests.php:

require_once 'baseTest.php';
require_once 'coreTest.php';    
class LibAllTests
{
    public static function suite()
    {
        $suite = new PHPUnit_Framework_TestSuite('Lib'); 
        $suite->addTestSuite('CoreTest');
        $suite->addTestSuite('BaseTest'); 
        return $suite;
    }
}

Из командной строки я могу позвонить:

  • phpunit /tests/allTests.php: выполняетсявсе тесты
  • phpunit /tests/lib/libAllTests.php: запуск всех тестов lib
  • phpunit /tests/lib/baseTest.php: запуск всех базовых тестов
  • phpunit /tests/*: запуск всех тестов

И во всех четырех сценариях тесты ядра запускаются перед базовыми тестами, и никакие тесты не повторяются дважды.

Я использую phpUnit 3.5.7.

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