| Q | ใ
| -------------------- | ---------------
| PHPUnit ๋ฒ์ | 9.2.5
| PHP ๋ฒ์ | PHP 7.4.7 (cli) (๋น๋ : 2020 ๋
6 ์ 11 ์ผ 18:33:07) (NTS)
| ์ค์น ๋ฐฉ๋ฒ | ์๊ณก๊ฐ
dataProvider๋ฅผ ํตํด Exception
์ธ์คํด์ค๋ฅผ ์ ๋ฌํ ๋ Uncaught ReflectionException์ด ๋ฐ์ํฉ๋๋ค.
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 ๋น ๋ฅธ ํ์ธ : ๋ณ๋์ ํ๋ก์ธ์ค์์ ํ
์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋ง์ต๋๊น?
์ ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ PHPUnit ํ๋ก์ธ์ค์์ ๊ฒฉ๋ฆฌ ๋ ํ๋ก์ธ์ค๋ก ์ ๋ฌํ๊ธฐ ์ํด [un]serialize($data)
ํฉ๋๋ค.
@sebastianbergmann ์ด๊ฒ์ด ์๋ ค์ง ์ ํ ์ฌํญ์ด๋ฉฐ ์์๋๋ ๋์์ ๋๊น?
@stemis ๋น ๋ฅธ ํ์ธ : ๋ณ๋์ ํ๋ก์ธ์ค์์ ํ ์คํธ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค. ๋ง์ต๋๊น?
์ ๊ณต๋ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ PHPUnit ํ๋ก์ธ์ค์์ ๊ฒฉ๋ฆฌ ๋ ํ๋ก์ธ์ค๋ก ์ ๋ฌํ๊ธฐ ์ํด[un]serialize($data)
ํฉ๋๋ค.
์, processIsolation
์ด ์ฌ์ฉ ์ค์ ๋ ๊ฒฝ์ฐ์๋ง ๋ฐ์ํฉ๋๋ค.
@stemis ์ถ๊ฐ ์ ๋ณด์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ง๋ ฌํ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ PHPT ํ์ผ์ ํฌํจํ ์ธ๋ถ ํ๋ก์ธ์ค์๋ง ์ฌ์ฉํด์ผํฉ๋๋ค. ~ ๋ค๊ฐ์ค๋ @dataProvider
๋ฆฌํฉํ ๋ง์ ํตํด ์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์๊ณ ์ถ์ต๋๋ค. @sebastianbergmann ์ด ์๋ ํ ๋์์ ๋ํด ์๊ณ ์๋ ๊ฒ์ด ๋ฌด์์ธ์ง ํ์ธํ์ญ์์ค. ~
์! ์
๋ฐ์ดํธ์ ๋ํ ํจ์น ๋
ธํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :)
ํ๋ก์ธ์ค๊ฐ์ _any_ ๋ฐ์ดํฐ ์ ํ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. ์ด์ ๋ํด ๋
ผ์ ํ ๊ฒ์
๋๋ค. ์๋ง๋ ๋ฐ์ดํฐ ๊ณต๊ธ์๋ก๋-๋ฐ-์ธ๋ก๋์ฃผ๊ธฐ๋ฅผ ๋ฆฌํฉํ ๋งํ๋ ๋์์ด ๋ฉ์ปค๋์ฆ์ ํฌํฌ๋ฅผ ๋ถ์ผ ์ ์์ต๋๋ค.
๊ด์ฌ์ ๊ฐ์ ธ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ค์ ์ฃผ์ # 4302 (๋ฉ์ธ ๋ฃจํ ๋ฆฌํฉํ ๋ง) ๋ฐ # 3736 (๋ฐ์ดํฐ ๊ณต๊ธ์ ๋ฆฌ์์ค ๊ด๋ฆฌ) ์์ ์ ํ ๋ ์ฌ๊ธฐ์ ๋ต์ฅ ํ ๊ฒ์ ๋๋ค.