Phpunit: рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рддрд░реНрдХ рдЧрдгрдирд╛ рддреНрд░реБрдЯрд┐

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рджрд┐рд╕ре░ 2016  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: sebastianbergmann/phpunit

рдореИрдВ PHPUnit (5.7.4) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдЧреБрдЬрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

ArgumentCountError: Too few arguments to function ValidationTest::testValidateType(), 0 passed and at least 3 expected

рдпрджрд┐ рдореИрдВ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддрд╛ рд╣реВрдВ (рдЕрд░реНрдерд╛рдд рд▓реМрдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓реЗрдВ, рдкреНрд░рджрд╛рддрд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдирд╛рдо рдпрд╛ рдкреНрд░рдХрд╛рд░ рдЖрджрд┐) рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдВ, рддреЛ рдпрд╣ рдПрдХ рдмрд╛рд░ рдХреЗ рд▓рд┐рдП рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓рдЧрд╛рддрд╛рд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд░рди рдХреЗ рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ PHPUnit рдкреНрд░рджрд╛рддрд╛ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреНрдпрд╛ рдЗрд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ (рд╢рд╛рдпрдж setUp рдпрд╛ tearDown )?


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдПрдХ рдмрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдмрд╛рд░ рдкрд╛рд╕ рдХрд░реЗрдВ):

/**
 * <strong i="15">@covers</strong> Validation
 * <strong i="16">@coversDefaultClass</strong> Validation
 */
class ValidationTest extends TestCase {

    protected $validation;


    protected function setUp() {
        $this->validation = new Validation();
    }


    /**
     * <strong i="17">@covers</strong> ::validateType
     * <strong i="18">@dataProvider</strong> validateTypeProdiver
     */
    public function testValidateType($assertion, $argument, $type) {
        $result = $this->validation->validateType($argument, $type);

        switch ($assertion) {
            case 'True':
                $this->assertTrue($result);
                break;
        }
    }


    public function validateTypeProdiver() {
        return [
            ['True', 'file.txt', 'str']
       ];
    }
}

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд╣рдореЗрд╢рд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╣рд░ рдмрд╛рд░ рдЧреБрдЬрд░рддрд╛ рд╣реИ):

/**
 * <strong i="24">@covers</strong> Validation
 * <strong i="25">@coversDefaultClass</strong> Validation
 */
class ValidationTest extends TestCase {

    protected $validation;


    protected function setUp() {
        $this->validation = new Validation();
    }


    /**
     * <strong i="26">@covers</strong> ::validateType
     */
    public function testValidateType() {
        foreach ($this->validateTypeProdiver() as $args) {
            $result = call_user_func_array([$this->validation, 'validateType'], array_slice($args, 1));

            switch ($args[0]) {
                case 'True':
                    $this->assertTrue($result);
                    break;
            }
        }
    }


    public function validateTypeProdiver() {
        return [
            ['True', 'file.txt', 'str']
       ];
    }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдерд╛

class Test extends TestCase {
    protected $tested;

    public function __construct()
    {
        parent::__construct();
        $this->tested = new TestedClass();
    }

    public function provider(): array
    {
        return array(
            array(0, 1, 1),
            array(1, 2, 3),
        );
    }

    /**
     * <strong i="7">@dataProvider</strong> provider
     */
    public function testSum(int $first, int $second, int $expected)
    {
        $this->assertEquals($expected, $this->tested->sum($first + $second));
    }
}

рдореИрдВрдиреЗ __construct рдХреЛ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдЖрдкрдХреА рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред рдпрд╣рд╛рдБ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рд╣реИ:

$ composer require phpunit/phpunit:5.7.4
$ vendor/bin/phpunit && vendor/bin/phpunit

$ vendor/bin/phpunit && vendor/bin/phpunit 
PHPUnit 5.7.4 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.0.17-2+deb.sury.org~trusty+1
Configuration: /.../phpunit.xml

.                                                                   1 / 1 (100%)

Time: 44 ms, Memory: 4.00MB

OK (1 test, 1 assertion)
PHPUnit 5.7.4 by Sebastian Bergmann and contributors.

Runtime:       PHP 7.0.17-2+deb.sury.org~trusty+1
Configuration: /.../phpunit.xml

.                                                                   1 / 1 (100%)

Time: 32 ms, Memory: 4.00MB

OK (1 test, 1 assertion)

рдпрд╣ рд╡рд╣ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛:

use PHPUnit\Framework\TestCase;

class TestMeTest extends TestCase
{

    protected $validation;

    protected function setUp()
    {

        $this->validation = new Validation();
    }

    /**
     * <strong i="9">@covers</strong> ::validateType
     * <strong i="10">@dataProvider</strong> validateTypeProdiver
     */
    public function testValidateType($assertion, $argument, $type)
    {

        $result = $this->validation->validateType($argument, $type);

        switch ($assertion) {
            case 'True':
                $this->assertTrue($result);
                break;
        }
    }

    public function validateTypeProdiver()
    {

        return [
            ['True', 'file.txt', 'str']
        ];
    }
}

рдФрд░ Validation рд╡рд░реНрдЧ:

class Validation
{
    public function validateType() {
        return true;
    }
}

PHPUnit рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЛ рдХреИрд╢ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЗрд╕реЗ рдкреБрди: рдкреЗрд╢ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрднреА рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдерд╛

class Test extends TestCase {
    protected $tested;

    public function __construct()
    {
        parent::__construct();
        $this->tested = new TestedClass();
    }

    public function provider(): array
    {
        return array(
            array(0, 1, 1),
            array(1, 2, 3),
        );
    }

    /**
     * <strong i="7">@dataProvider</strong> provider
     */
    public function testSum(int $first, int $second, int $expected)
    {
        $this->assertEquals($expected, $this->tested->sum($first + $second));
    }
}

рдореИрдВрдиреЗ __construct рдХреЛ рд╕реЗрдЯрдЕрдк рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@dmirogin рдХреЗ рд╕рдорд╛рдзрд╛рди рдиреЗ рдореЗрд░рд╛ рджрд┐рди рдмрдирд╛ рджрд┐рдпрд╛, phpunit 8.5

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

stephen-leavitt-sonyatv-com picture stephen-leavitt-sonyatv-com  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

keradus picture keradus  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

keradus picture keradus  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stemis picture stemis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dciancu picture dciancu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ