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