Плагин PHPUnit в Netbeans 8.2 выдает фатальную ошибку: класс 'PHPUnit_Framework_TestSuite' не найден при попытке запустить тестовый пример - PullRequest
0 голосов
/ 27 марта 2019

Когда я пытаюсь запустить PHPUnit в Netbeans, я сталкиваюсь с этой ошибкой:

Fatal error: Class 'PHPUnit_Framework_TestSuite' not found in C:\Users\julian\AppData\Roaming\NetBeans\8.2\phpunit\NetBeansSuite.php on line 63
Done.

Это происходит как в Netbeans, так и в CLI.


Я начал отлаживать эту проблему, перейдя в этот каталог: C:\Users\julian\AppData\Roaming\NetBeans\8.2\phpunit\.

Этот каталог содержал один файл: NetBeansSuite.php.Я открыл его, чтобы найти подсказки, и увидел следующую строку:

class NetBeansSuite extends PHPUnit_Framework_TestSuite {

Что я не видел, так это какой-то конкретный класс PHPUnit_Framework_TestSuite.

Что будет дальше, так это то, что файл NetBeansSuite.php не имеет языковых конструкций include или require, которые могут включать класс PHPUnit_Framework_TestSuite.

Итак, чтобы исправить проблему с фатальной ошибкой, я должен включить PHPUnit_Framework_TestSuite в NetbeansSuite.php.

Это проблема, потому что я не автор NetbeansSuite.php.Вдобавок к этому автор NetbeansSuite.php написал это в разделе комментариев:

 <b>WARNING: User changes to this file should be avoided.</b>

Я читал далее в комментариях:

 * Copyright 2010 Oracle and/or its affiliates. All rights reserved.

Я думаю, NetbeansSuite.php файл устарел.


Поиск в сети привел меня к следующему вопросу:*

Они утверждают, что использование версии PHPUnit_Framework_TestCase с пространством имен должно решить проблему.Я сделал то, что они написали.

1047 * Я упорно изменил NetBeansSuite.php.Старый код:
class NetBeansSuite extends PHPUnit_Framework_TestSuite {

Новый код:

require_once 'PHPUnit/Autoload.php';

use PHPUnit\Framework\TestCase;

class NetBeansSuite extends TestCase {

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

Fatal error: Declaration of CalculatorTest::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp(): void in C:\wamp64\www\test\CalculatorTest.php on line 97

ВДругими словами, это дало мне новую проблему.

Моя система:

Windows 10
WAMP
php 7.2.14
PHPUnit 8.0.6
Netbeans version 8.2 (Netbeans PHPUnit plugin installed through Tools > Plugins. Version: 0.26.2)

Мой вопрос: кто-нибудь знает, каким должен быть файл NetBeansSuite.php с системой, описанной выше?


Метод setUp в моем тестовом примере:
protected function setUp()
{
    $this->object = new Calculator;
}


Обновление: проект Skeleton Generator прекращен.См. Ссылку: https://github.com/sebastianbergmann/phpunit-skeleton-generator Таким образом, чтобы исправить ошибку Declaration of CalculatorTest::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp(), в тестовом примере должно использоваться соответствующее объявление возвращаемого типа.
// I added : void
protected function setUp(): void
{
    $this->object = new Calculator;
}

// : void needs to be added in the tearDown method as well
protected function tearDown(): void

К сожалению, это дало мне новые проблемы:

Warning: require_once(PHPUnit/Autoload.php): failed to open stream: No such file or directory in C:\wamp64\www\test\CalculatorTest.php on line 4

Fatal error: require_once(): Failed opening required 'PHPUnit/Autoload.php' (include_path='.;C:\php\pear') in C:\wamp64\www\test\CalculatorTest.php on line 4

Я решил это вручную, установив PEAR и создав новый каталог "PHPUnit" в C:\php\PEAR.Затем я создал новый файл Autoload.php.Я заполнил содержимое Autoload.php файлом примера PSR-4, найденным по адресу: https://www.php -fig.org / psr / psr-4 / .

Это решило проблему с автозагрузкой, но я столкнулся с новой проблемой во время выполнения тестового примера.

C:\wamp64\www\test>phpunit CalculatorTest.php
PHPUnit 8.0.6 by Sebastian Bergmann and contributors.



Time: 170 ms, Memory: 10.00 MB

No tests executed!

Показывает No tests executed!, но у меня 5 тестов.Я сделаю новый вопрос для этого.Вот оно: PHPUnit 8, установленный в Windows через PHAR-шоу. Тесты не выполняются

1 Ответ

1 голос
/ 27 марта 2019

Изначально вам действительно следует обновить свои пространства имен, поскольку они были изменены в более поздних версиях PHPUnit.

Ошибка указывает на то, что ваш метод CalculatorTest::setUp() несовместим с версией PHPUnit. Не могли бы вы опубликовать этот метод здесь?

...