티스토리 뷰

728x90

라라벨에서 테스트 클래스를 생성하면 TestCase 추상 클래스를 상속받은 클래스가 생성됩니다.

Feature Test냐 UnitTest냐에 따라 이 클래스의 출처(?)가 달라집니다.

단위 테스트 Unit Test

  • 가장 작은 단위의 코드 (ex.메소드, 함수)에 대한 테스트
  • 타겟코드가 의도대로 정확히 동작하는지 검증
  • 서비스 컨테이너가 동작하지 않음
// UserTest클래스를 Unit 패키지 안에 생성
php artisan make:test UserTest --unit
namespace Tests\Unit;

use PHPUnit\Framework\TestCase;

class UserTest extends TestCase
{

단위 테스트에서는 TestCase는 PHPUnit\Framework의 TestCase를 상속받아 사용합니다.

PHPUnit의 TestCase에서는 서비스 컨테이너가 동작하지 않기 때문에 Config와 같은 Facade나 DAO 등 외부 인스턴스를 사용할 수 없습니다.

(사용하기 위해서는 테스트 더블로 만들어야 합니다. 라라벨 진영에서는 Mockery를 가장 많이 사용합니다)

 

기능 테스트 Feature Test

  • 종단간 테스트 (End to End Test)
  • ex) API의 엔드포인트를 HTTP를 통해 request를 보내고 response 받기
  • API Request는 controller, model, dao 등 모든 레이어를 통과
  • 단위 테스트와는 달리 개발자가 변경할 수 없는 부분 (ex. 외부 라이브러리, 데이터베이스)까지 묶어서 검증
// UserTest클래스를 Feature 패키지 안에 생성
php artisan make:test UserTest
namespace Tests\Feature;

use Tests\TestCase;

class UserTest extends TestCase

단위 테스트와는 다르게 Tests의 TestCase를 상속받아 사용합니다.

JUnit의 @SpringBootTest와 유사하다고 보면 됩니다.

 

728x90
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함