매개변수화된 테스트를 위한 데이터 제공자
dataProvider를 사용해 여러 입력값으로 같은 테스트를 실행합니다.
매개변수화된 테스트를 위한 데이터 제공자은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
데이터 제공자란 무엇입니까
데이터 제공자는 테스트 입력 집합을 반환하는 메서드입니다. PHPUnit은 각 데이터 세트마다 테스트 메서드를 한 번씩 호출하므로 코드를 반복하지 않고도 다양한 입력 조합을 쉽게 테스트할 수 있습니다.
기본 데이터 제공자
제공자는 2차원 배열을 반환합니다. 각 하위 배열은 테스트 메서드를 한 번 호출할 때 사용됩니다.
<?php
public static function additionProvider(): array
{
return [
"two positives" => [2, 3, 5],
"negative" => [-1, 1, 0],
"zeros" => [0, 0, 0],
];
}특성으로 연결하기 (PHPUnit 10 이상)
#[DataProvider] 특성을 사용하여 테스트를 제공자에 연결합니다.
<?php
use PHPUnit\Framework\Attributes\DataProvider;
#[DataProvider("additionProvider")]
public function test_add(int $a, int $b, int $expected): void
{
$this->assertSame($expected, (new Calculator())->add($a, $b));
}이름이 지정된 데이터 세트
제공자 배열에서 연관 키를 사용하여 각 데이터 세트에 설명적인 이름을 지정합니다. 이 이름은 테스트 출력에 표시됩니다.
<?php
public static function emailProvider(): array
{
return [
"valid email" => ["user@example.com", true],
"missing @" => ["userexample.com", false],
"missing domain" => ["user@", false],
"international" => ["用户@例子.com", true],
];
}제너레이터 반환
제공자는 배열 대신 Generator를 반환하여 데이터 세트를 지연 생성할 수 있습니다. 매우 큰 데이터 세트에 유용합니다.
<?php
public static function largeProvider(): Generator
{
for ($i = 1; $i <= 1000; $i++) {
yield "case $i" => [$i, $i * 2];
}
}외부 데이터 원본
제공자 메서드 내부에서 CSV, JSON 또는 데이터베이스의 테스트 데이터를 불러와 실제 데이터로 테스트를 수행합니다.
<?php
public static function csvProvider(): array
{
$rows = array_map("str_getcsv", file("tests/fixtures/data.csv"));
return array_map(fn($r) => [$r[0], (int)$r[1], (int)$r[2]], $rows);
}여러 데이터 제공자
특성을 여러 개 나열하여 테스트 메서드에서 여러 제공자를 참조할 수 있습니다.
제공자는 정적이어야 합니다
PHPUnit은 테스트 클래스를 인스턴스화하기 전에 데이터 제공자 메서드를 호출하므로, 데이터 제공자 메서드는 static으로 선언해야 합니다.
경계 사례 테스트
제공자를 사용하여 0, 음수, 빈 문자열, null, 최대 정수값 등 버그가 발생하기 쉬운 경계 사례를 체계적으로 다룹니다.
데이터 제공자 출력
실패 메시지에 데이터 세트 이름이 표시됩니다: CalculatorTest::test_add with data set "negative" ([-1, 1, 0]). 따라서 어떤 사례가 실패했는지 쉽게 파악할 수 있습니다.
제공자와 setUp 결합
데이터 제공자와 setUp을 함께 사용할 수 있습니다. 각 반복 전에 setUp이 실행되므로 각 데이터 세트에 새로운 테스트 대상 객체가 제공됩니다.
성능 고려 사항
제공자는 테스트 모음을 불러올 때 실행됩니다. 제공자에서 비용이 큰 작업(HTTP 호출, DB 쿼리)을 수행하지 말고 팩토리와 픽스처를 사용합니다.
요약
데이터 제공자는 테스트 중복을 없애 줍니다. 설명적인 실패 메시지를 위해 연관 키를 사용합니다. 제공자를 static으로 표시하고 #[DataProvider] 특성으로 연결합니다.
빠른 확인
데이터 제공자에는 어떤 가시성 수정자가 있어야 합니까?
자주 묻는 질문
“매개변수화된 테스트를 위한 데이터 제공자” 강의는 무료인가요?
네 — “매개변수화된 테스트를 위한 데이터 제공자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“매개변수화된 테스트를 위한 데이터 제공자”에서 뭘 배우나요?
dataProvider를 사용해 여러 입력값으로 같은 테스트를 실행합니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“매개변수화된 테스트를 위한 데이터 제공자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- PHPUnit 설정 및 첫 테스트
- 검증문 및 테스트 메서드
- 매개변수화된 테스트를 위한 데이터 제공자
- PHPUnit으로 의존성 모의 객체 만들기