유닛 테스트 프레임워크, 커밋된 코드를 유닛 단위로 테스트



* 정보

https://phpunit.de/

PHPUnit 8 - PHP 7.2, PHP 7.3, PHP 7.4

PHPUnit 7 - PHP 7.1, PHP 7.2, PHP 7.3

PHPUnit 6 - PHP 7.0, PHP 7.1, PHP 7.2   <===== 라라벨 5.5

PHPUnit 5 - PHP 5.6, PHP 7.0, PHP 7.1   <===== 라라벨 5.3



* 라라벨에서 설치

composer.json 편집

        "phpunit/phpunit": "^6",  원하는 버전 숫자로 수정


composer update


./vendor/bin/phpunit --version


ln -s ./vendor/phpunit/phpunit/phpunit phpunit



* 환경변수 파일 phpunit.xml 확인 및 수정

https://laravel.kr/docs/5.5/testing



* 테스트 생성 

php artisan make:test BoxTest

- tests/Feature/BoxTest.php 파일 생성


php artisan make:test BoxTest --unit

- tests/Unit/BoxTest.php 파일 생성



* 테스트 실행

./vendor/bin/phpunit --bootstrap vendor/autoload.php tests/Unit/BoxTest

- phpunit.xml 파일에 설정되어있어서 "--bootstrap vendor/autoload.php" 는 생략 가능


- 위에서 생성한 링크 사용

./phpunit  tests/Unit/BoxTest    <====== 권장


./phpunit   

- Feature 와 Unit 폴더에 있는 모든 파일을 테스트



//===================

php artisan make:test BoxTest --unit


* 테스트 코드 소스

https://semaphoreci.com/community/tutorials/getting-started-with-phpunit-in-laravel


./App/usr/Box.php


<?php

namespace App\usr; // App의 A는 꼭 대문자라야 한다.!!!!


class Box

{

    protected $items = [];


    public function __construct($items = [])

    {

        $this->items = $items;

    }


    public function has($item)

    {

        return in_array($item, $this->items);

    }

}



//=========================

./tests/Unit/BoxTest.php


<?php


namespace Tests\Unit;


use Tests\TestCase;

use Illuminate\Foundation\Testing\WithFaker;

use Illuminate\Foundation\Testing\RefreshDatabase;


use App\usr\Box; // App의 A는 꼭 대문자라야 한다.!!!!


class BoxTest extends TestCase

{

    public function testHasItemInBox()

    {

        $box = new Box(['cat', 'toy', 'torch']);


        $this->assertTrue($box->has('toy'));

        $this->assertFalse($box->has('ball'));

    }

}




//=====================================================

//참고

https://semaphoreci.com/community/tutorials/getting-started-with-phpunit-in-laravel



PHPUnit in Laravel - Cheat sheet

Enjoy this cheat sheet at its fullest within Dash, the macOS documentation browser.

https://kapeli.com/cheat_sheets/PHPUnit_in_Laravel.docset/Contents/Resources/Documents/index



//========

//참고만


- 현재 폴더에 설치

wget -O phpunit https://phar.phpunit.de/phpunit-7.phar

chmod +x phpunit

/phpunit --version




반응형
Posted by codens