Phpunit: DataProvider๋ฅผ ํ†ตํ•ด Exception ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ReflectionException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2020๋…„ 07์›” 01์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sebastianbergmann/phpunit

| 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()],
        ];
    }
}

๋ชจ๋“  3 ๋Œ“๊ธ€

@stemis ๋น ๋ฅธ ํ™•์ธ : ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?
์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ • PHPUnit ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฒฉ๋ฆฌ ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด [un]serialize($data) ํ•ฉ๋‹ˆ๋‹ค.

@sebastianbergmann ์ด๊ฒƒ์ด ์•Œ๋ ค์ง„ ์ œํ•œ ์‚ฌํ•ญ์ด๋ฉฐ ์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์ž…๋‹ˆ๊นŒ?

@stemis ๋น ๋ฅธ ํ™•์ธ : ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ?
์ œ๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ • PHPUnit ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฒฉ๋ฆฌ ๋œ ํ”„๋กœ์„ธ์Šค๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด [un]serialize($data) ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, processIsolation ์ด ์‚ฌ์šฉ ์„ค์ •๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

@stemis ์ถ”๊ฐ€ ์ •๋ณด์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์€ PHPT ํŒŒ์ผ์„ ํฌํ•จํ•œ ์™ธ๋ถ€ ํ”„๋กœ์„ธ์Šค์—๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ~ ๋‹ค๊ฐ€์˜ค๋Š” @dataProvider ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•ด ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. @sebastianbergmann ์ด ์˜๋„ ํ•œ ๋™์ž‘์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ~

์•„! ์—…๋ฐ์ดํŠธ์— ๋Œ€ํ•œ ํŒจ์น˜ ๋…ธํŠธ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค :)
ํ”„๋กœ์„ธ์Šค๊ฐ„์— _any_ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ๋…ผ์˜ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๋ฐ์ดํ„ฐ ๊ณต๊ธ‰์ž๋กœ๋“œ-๋Ÿฐ-์–ธ๋กœ๋“œ์ฃผ๊ธฐ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๋™์•ˆ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ํฌํฌ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ด€์‹ฌ์„ ๊ฐ€์ ธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ฃผ์— # 4302 (๋ฉ”์ธ ๋ฃจํ”„ ๋ฆฌํŒฉํ† ๋ง) ๋ฐ # 3736 (๋ฐ์ดํ„ฐ ๊ณต๊ธ‰์ž ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ) ์ž‘์—…์„ ํ•  ๋•Œ ์—ฌ๊ธฐ์— ๋‹ต์žฅ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

stephen-leavitt-sonyatv-com picture stephen-leavitt-sonyatv-com  ยท  4์ฝ”๋ฉ˜ํŠธ

joubertredrat picture joubertredrat  ยท  4์ฝ”๋ฉ˜ํŠธ

keradus picture keradus  ยท  4์ฝ”๋ฉ˜ํŠธ

sebastianbergmann picture sebastianbergmann  ยท  3์ฝ”๋ฉ˜ํŠธ

keradus picture keradus  ยท  3์ฝ”๋ฉ˜ํŠธ