Laravel에서 Pest와 PHPUnit를 이용한 간단한 Testing 실행
Testing
라라벨은 application을 테스트하기위한 Pest와 PHPUnit를 제공한다.
여기서는 간단한 testing 실행에 대해서 알아보자.
먼저 기본적인 구조 부터 확인해보자. 기본적인 구조는 laravel에서 default로 제공함으로 기존 폴더를 보시면 됩니다.
Default 모습
- composer.json
{
..........
"require-dev": {
"orchestra/testbench": "^9"
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
..........
}
- tests folder 기본 모습
- phpunit.xml
- .env.testing
- tests
- Feature
- Unit
- CreatesApplication.php
- TestCase.php
Feature vs Unit
tests 디렉토리에는 두개의 하위 디렉토리(Feature, Unit) 가 존재한다. 테스트파일을 생성할때도 Feature로 할 것인지 Unit로 할 것인지 결정해야 하는데 각각의 특징은 아래와 같다.
Unit
unit test는 작은 단위로 테스트 할 수 있는 하나의 메소드를 테스트 하는 데 유리하다. 하나의 단위이므로 어플리케이션에서 제공하는 데이타베이스나 다른 서비스 파일에 접근할 수 없다.
Feature
unit와 다르게 볼륨있는 테스트를 하는 것에 적당하다. 가령 많은 오브젝트와 인터렉트 하거나 full HTTP request등이다.
일반적인 테스트는 Feature Test로 진행하기를 바란다.
테스트 생성하기
php artisan make:test UserTest // Feature 디렉토리에 UserTest.php 생성
php artisan make:test UserTest --unit // Unit 디렉토리에 UserTest.php 생성
테스트할 메소드 명은 접두어로 test 가 들어가면 모든 것이 자동으로 테스트 된다.
use Tests\TestCase;
class ExampleTest extends TestCase
{
public function test_example()
{
$response = $this->get('/');
$response->assertStatus(200);
}
public function testmyname()
{
echo 'My name is blabla';
}
}
테스트 실행하기
3가지 종류를 지원하는데 3중에 여러분이 편한 것을 선택하면 됩니다.
phpunit 와 pest 에 대한 자세한 사항은 여기 를 보시면 더 좋을 것 같습니다.
./vendor/bin/pest
./vendor/bin/phpunit
./vendor/bin/phpunit --env=testing // for .env.testing
php artisan test
php artisan test vendor/wangta69/laravel-visitors-statistics // for package test
테스트 결과
php artisan test 를 실행하면 기본으로 젝옹하는 ExampleTest와 방금만든 UserTest가 실행됨을 확인 할 수 있습니다.
PASS Tests\Unit\ExampleTest
✓ example
PASS Tests\Unit\UserTest
✓ example
PASS Tests\Feature\ExampleTest
✓ example
PASS Tests\Feature\UserTest
✓ example
Tests: 4 passed
Time: 0.35s