PHPunit을 사용해 테스트를 하다보면 추후 기능 구현을 위해 남겨 두었다가 개발을 위해 잠시 테스트를 스킵하고 싶은데,
이에 대한 걸 단순히 주석 처리나, ignore시켜서 하기에는 나중에 나 스스로를 못믿기도 하고(…)
테스트 할때마다 이를 표시하고 싶은데, risk 상태로 두자니 찝찝하고 여러모로 어떻게 처리해야할지 모르는 상황에서 markTestSkipped
메소드를 찾게 되었다.
Mark Test Skipped
이 메소드는 이름 그대로 해당 test를 넘겨주는 역할을 한다. 다만, 테스트를 아에 건너 뛰는것이 아닌 해당 테스트가 스킵되었고 어떤 내용으로 스킵되었는지를 표시해준다.
// Test codes ...
public function testSomeThing(): void
{
$this->markTestSkipped('this test skipped because i want');
// ...
}
// Test codes ...
위처럼 markTestSkipped
는 문자열을 인수로 받는다. skip의 s
로 표시된다.
PHPUnit 8.5.4 by Sebastian Bergmann and contributors.
.S 2 / 2 (100%)
Time: 37.1 seconds, Memory: 28.00 MB
OK, but incomplete, skipped, or risky tests!
Tests: 2, Assertions: 1, Skipped: 1.
markTestIncomplete 와의 차이점
또한 phpunit에는 markTestIncomplete
메소드가 있어 해당 테스트가 완료되지 않았다는 것을 표기해 줄 수 있다. 위에 상황을 봣을 땐 이 메소드가 더 어울리는 것같지만, markTestSkipped
는 artisan test
를 이용할 때 다른 결과를 보여준다.
위처럼 markTestSkipped
는 해당 인수는 아래와 같이 테스트 결과와 함께 표시되며, 인자로 전달된 메시지를 출력해준다. 이를 이용해 왜 해당 테스트가 skip되었는지를 명확하게 표시 해 줄 수 있다.
[email protected]:~/test$ artisan test
WARN Tests\Feature\MyTest
✓ others
s some thing → this test skipped because i want
Tests: 1 skipped, 1 passed
Time: 0.10s
[email protected]:~/test$ artisan test
WARN Tests\Feature\MyTest
✓ others
i some thing
Tests: 1 incompleted, 1 passed
Time: 0.11s
예를 들어 config(‘range’) 의 값이 10 미만일 때 만 skip하고 싶고 왜 스킵되었는 표시해주고 싶을때 사용할수 있다.