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
평점을 남겨주세요
평점 : 2.5
총 투표수 : 1