PHPUnit test case dependency

목표

단위 테스트를 할때 테스트케이스들을 순서대로 실행해야 하는 경우가 있습니다.

예로 사용자를 삭제하는 테스트 케이스전에 사용자를 등록하는 테스트 케이스를 실행해야겠죠.


@depends annotation

PHPUnit 은 이런 테스크 케이스간의 의존성을 위해 @depends annotation 을 제공하고 있습니다.

사용법은 다음과 같이 의존성있는 메서드를 기술해 주면 되며 아래의 코드는 testAddUser 가 testDelUser 보다 먼저 실행됩니다.

public function testAddUser()
{
    $ar = ['name' => 'KwangSeob', 'email' => 'lesstif@gmail.com'];
    $user = User::create($ar);

    return $user;
}

/**
 * @depends testAddUser
 */
public function testDelUser(User $user)
{
    $this->assertEquals('KwangSeob', $user->name);
    $this->assertNotEmpty($user->id);
    
    return $user;
}


@depends 사용시 이전 테스트의 리턴값은 다음 테스트의 입력값으로 사용할 수 있습니다.

testAddUser 에서 리턴한 $usertestDelUser 의 입력값으로 전달되므로 테스트 케이스간에 자료를 전달하여 더욱 유연한 테스트를 만들 수 있습니다.


Ref