Когда я пытаюсь запустить 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-шоу. Тесты не выполняются