| Q | SEBUAH
| -------------------- | ---------------
| Versi PHPUnit | 9.2.5
| Versi PHP | PHP 7.4.7 (cli) (dibangun: Jun 11 2020 18:33:07) (NTS)
| Metode Instalasi | Komposer
Saat meneruskan instance Exception
melalui dataProvider, Uncaught ReflectionException dilemparkan:
Fatal error: Uncaught Exception: Serialization of 'ReflectionClass' is not allowed in /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php:723
Stack trace:
#0 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php(723): serialize(Array)
#1 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestSuite.php(638): PHPUnit\Framework\TestCase->run(Object(PHPUnit\Framework\TestResult))
#2 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestSuite.php(638): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#3 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestSuite.php(638): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#4 /var/www/html/vendor/phpunit/phpunit/src/Framework/TestSuite.php(638): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#5 /var/www/html/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(657): PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#6 /var/www/html/vendor/phpunit/phpunit/src/TextUI/Command in /var/www/html/vendor/phpunit/phpunit/src/Framework/TestCase.php on line 723
processIsolation="true"
class MyTest extends \PHPUnit\Framework\TestCase
{
/**
* <strong i="20">@dataProvider</strong> thisMethodDataProvider
*/
public function testThisMethod(\Exception $expectedException): void
{
// ...
}
public function thisMethodDataProvider()
{
return [
[new \Exception()],
];
}
}
@stemis Pemeriksaan cepat: Anda menjalankan pengujian dalam proses terpisah, apakah itu benar?
Untuk meneruskan data yang disediakan dari proses PHPUnit yang mengatur ke yang terisolasi, ia menggunakan [un]serialize($data)
.
@sebastianbergmann Apakah ini batasan yang diketahui dan perilaku yang diharapkan?
@stemis Pemeriksaan cepat: Anda menjalankan pengujian dalam proses terpisah, apakah itu benar?
Untuk meneruskan data yang disediakan dari proses PHPUnit yang mengatur ke yang terisolasi, ia menggunakan[un]serialize($data)
.
Ya, ini hanya terjadi dengan processIsolation
dihidupkan
@stemis Terima kasih atas informasi tambahannya. Meneruskan data menggunakan serialisasi sebaiknya hanya digunakan untuk proses eksternal termasuk file PHPT. ~ Dengan refactoring @dataProvider
akan datang, saya ingin tahu apa yang terjadi di sini. Lihat apa yang diketahui @sebastianbergmann tentang perilaku yang diinginkan. ~
Ah! Terima kasih atas catatan tambalan untuk pembaruan Anda :)
Saya akan lebih baik jika akan ada cara untuk melewatkan tipe data _any_ antar proses. Akan membahas ini, mungkin saya bisa tetap bercabang dalam mekanisme ini saat refactoring siklus load-run-unload penyedia data.
Terima kasih sudah membawa ini padaku. Saya akan membalas di sini minggu depan ketika mengerjakan # 4302 (refactoring loop utama) dan # 3736 (manajemen sumber daya penyedia data).