1. 개요
PHP에는 다양한 테스트 도구들이 존재합니다. (PHPUnit, 목커리, PHPSpec, SimpleTest 등등)
하지만 우리가 다룰 것은 Laravel Framework이므로 Laravel Framework 내장되어있는 테스트 기능을 해보려고합니다.
Laravel에는 기본적으로 PHPUnit, 목커리, 페이커 등이 포함되어있습니다.
Laravel 테스트 기능을 통해 URL에 테스트 POST, GET을 전달한 후 응답 HTTP 상태코드를 확인하거나 JSON 응답 값을 검증할 수 있습니다. (프론트 JS를 위한 더스크라는 테스팅 프레임워크도 제공함)
2. 테스트 용어
1. 유닛 테스트 (Unit Test)
일반적으로 코드양이 적고, 상대적으로 독립적인 단위(클래스, 메서드)를 대상으로 테스트 합니다.
2. 기능 테스트 (Feature Test)
개별 유닛들이 함꼐 작동하는 방법과 메시지를 전달하는 방법 등을 테스트 합니다.
3. 애플리케이션 테스트 (Application Test)
인수 (acceptance test)나 동작 (functional test)라고도 부르며 주로 HTTP 호출같이 애플리케이션의 외부에서 애플리케이션의 전체 동작을 테스트합니다.
4. 회귀 테스트 (Regression Test)
Aplication Test와 비슷하지만 사용자의 해동을 더 세부적으로 묘사하고 그 행위가 애플리케이션을 중단시키는 지에 초점을 둡니다, 애플리케이션과 경계가 모호하지만 주로 테스트의 충실도로 구분합니다.
(쉽게 말하여 Aplication Test에서 한층 더 나아간게 회귀입니다.)
3. 실행 및 생성
프로젝트에 tests 폴더가 있을 것 입니다.
여기서 Feature => 기능 테스트는 여러 테스트를 묶은 것이며
Unit => 단위 테스트는 Class, module, function 등 작은 단위 테스트입니다.
이들은 각각 exampleTest를 가지고 있는 것을 확인할 수 있습니다.
코드의 내용은 아래와 같죠
tests/Feature/ExampleTest.php
<?php
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
tests/Unit/ExampleTest.php
<?php
namespace Tests\Unit;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$this->assertTrue(true);
}
}
테스트를 실행시키는 방법은 shell에서 아래 명령어를 실행시키면 됩니다.
php artisan test
phpunit
테스트 파일 생성은 아래 명령어로 가능합니다. (--unit이 있으면 단위 테스트)
php artisan make:test UserTest
php artisan make:test UserTest --unit
4. .env
php에서 테스트 할 때 환경변수를 가져오는 .env를 들리지 않으므로 환경변수가 필요할 경우 phpunit.xml에 환경변수를 등록해서 가져옵니다, env에 SITE_NAME을 가져온다면 phpunit.xml에 다음을 추가하면 됩니다.
<env name="SITE_NAME" value="test.com"/>
5. 주의사항
라라벨에서 테스트는 tests 디렉토리에 있는 Test로 끝나는 파일만을 테스트 코드로 실행합니다.
함수는 반대로 test로 시작하는 함수나 다큐멘테이션 블록(/** @testg */)을 붙인 것만 테스트에서 실행됩니다.
이는 PHPUnit의 관례입니다.
'PHP > Laravel' 카테고리의 다른 글
phpstorm 이미지 주소 정규식 검색 후 변경 (0) | 2022.07.20 |
---|---|
phpstorm + vagrant + xdebug 세팅 (0) | 2022.04.21 |
[Laravel] OAuth 2.0, Passport 개념 (0) | 2021.04.06 |
[Laravel] Laravel8에다가 React와 vue 올리기 (laravel/ui) (0) | 2021.04.05 |
[Laravel] 컴포넌트 총정리 (0) | 2021.04.03 |