단위 테스트 클래스

단위 테스트는 애플리케이션의 각 함수에 대한 테스트를 작성하는 소프트웨어 개발 방식입니다. 이 개념에 익숙하지 않다면 인터넷에서 검색해 보세요.

CodeIgniter의 단위 테스트 클래스는 평가 함수와 두 가지 결과 함수로 구성된 매우 간단한 클래스입니다. 완전한 테스트 슈트를 목적으로 하는 것이 아니라, 코드를 평가하여 올바른 데이터 타입과 결과를 생성하는지 확인하는 간단한 메커니즘입니다.

단위 테스트 라이브러리 사용

클래스 초기화

CodeIgniter의 대부분의 클래스와 마찬가지로 단위 테스트 클래스는 컨트롤러에서 $this->load->library 함수를 사용하여 초기화합니다:

$this->load->library('unit_test');

로드되면 $this->unit을 사용하여 단위 테스트 객체에 접근할 수 있습니다.

테스트 실행

테스트를 실행하려면 다음과 같이 테스트와 예상 결과를 제공합니다:

$this->unit->run(‘test’, ‘expected result’, ‘test name’, ‘notes’);

여기서 test는 테스트하려는 코드의 결과이고, expected result는 예상 데이터 타입이며, test name은 테스트에 부여할 수 있는 선택적 이름이고, notes는 선택적 메모입니다. 예시:

$test = 1 + 1;

$expected_result = 2;

$test_name = 'Adds one plus one';

$this->unit->run($test, $expected_result, $test_name);

제공하는 예상 결과는 리터럴 일치 또는 데이터 타입 일치 중 하나가 될 수 있습니다. 다음은 리터럴 예시입니다:

$this->unit->run('Foo', 'Foo');

다음은 데이터 타입 일치 예시입니다:

$this->unit->run('Foo', 'is_string');

두 번째 매개변수에 “is_string”이 사용된 것에 주목하세요. 이것은 함수에게 테스트가 문자열을 결과로 생성하는지 평가하도록 지시합니다. 다음은 허용되는 비교 타입 목록입니다:

  • is_object

  • is_string

  • is_bool

  • is_true

  • is_false

  • is_int

  • is_numeric

  • is_float

  • is_double

  • is_array

  • is_null

  • is_resource

리포트 생성

각 테스트 후 결과를 표시하거나 여러 테스트를 실행하고 마지막에 리포트를 생성할 수 있습니다. 리포트를 직접 표시하려면 run 함수를 echo하거나 반환합니다:

echo $this->unit->run($test, $expected_result);

모든 테스트에 대한 전체 리포트를 실행하려면 다음을 사용합니다:

echo $this->unit->report();

리포트는 HTML 테이블 형식으로 표시됩니다. 원시 데이터를 선호하는 경우 배열을 검색할 수 있습니다:

echo $this->unit->result();

엄격 모드

기본적으로 단위 테스트 클래스는 리터럴 일치를 느슨하게 평가합니다. 다음 예시를 고려하세요:

$this->unit->run(1, TRUE);

테스트는 정수를 평가하지만 예상 결과는 불리언입니다. 그러나 PHP는 느슨한 데이터 타입 방식으로 인해 일반 동등 테스트를 사용하여 위 코드를 TRUE로 평가합니다:

if (1 == TRUE) echo 'This evaluates as true';

원한다면 단위 테스트 클래스를 엄격 모드로 설정하여 데이터 타입과 값을 모두 비교할 수 있습니다:

if (1 === TRUE) echo 'This evaluates as FALSE';

엄격 모드를 활성화하려면 다음을 사용합니다:

$this->unit->use_strict(TRUE);

단위 테스트 활성화/비활성화

스크립트에 일부 테스트를 남겨 두고 싶지만 필요할 때만 실행하려면 다음을 사용하여 단위 테스트를 비활성화할 수 있습니다:

$this->unit->active(FALSE);

단위 테스트 표시

단위 테스트 결과가 표시되면 기본적으로 다음 항목이 표시됩니다:

  • 테스트 이름 (test_name)

  • 테스트 데이터 타입 (test_datatype)

  • 예상 데이터 타입 (res_datatype)

  • 결과 (result)

  • 파일 이름 (file)

  • 줄 번호 (line)

  • 테스트에 입력한 메모 (notes)

$this->unit->set_test_items()를 사용하여 표시될 항목을 사용자 정의할 수 있습니다. 예를 들어, 테스트 이름과 결과만 표시하려는 경우:

표시되는 테스트 사용자 정의
$this->unit->set_test_items(array('test_name', 'result'));
템플릿 생성

기본값과 다른 형식으로 테스트 결과를 표시하려면 자체 템플릿을 설정할 수 있습니다. 다음은 간단한 템플릿의 예시입니다. 필요한 의사 변수에 주목하세요:

$str = '
<table border="0" cellpadding="4" cellspacing="1">
{rows}
        <tr>
                <td>{item}</td>
                <td>{result}</td>
        </tr>
{/rows}
</table>';

$this->unit->set_template($str);

참고

템플릿은 단위 테스트 프로세스를 실행하기 전에 선언해야 합니다.

클래스 레퍼런스

class CI_Unit_test
set_test_items($items)
매개변수:
  • $items (array) – 표시할 테스트 항목 목록

반환:

void

테스트에서 표시되어야 하는 항목 목록을 설정합니다. 유효한 옵션:

  • test_name

  • test_datatype

  • res_datatype

  • result

  • file

  • line

  • notes

run($test[, $expected = TRUE[, $test_name = 'undefined'[, $notes = '']]])
매개변수:
  • $test (mixed) – 테스트 데이터

  • $expected (mixed) – 예상 결과

  • $test_name (string) – 테스트 이름

  • $notes (string) – 테스트에 첨부할 메모

반환:

테스트 리포트

반환 형식:

string

단위 테스트를 실행합니다.

report([$result = array()])
매개변수:
  • $result (array) – 테스트 결과가 포함된 배열

반환:

테스트 리포트

반환 형식:

string

이미 완료된 테스트에 대한 리포트를 생성합니다.

use_strict([$state = TRUE])
매개변수:
  • $state (bool) – 엄격 상태 플래그

반환 형식:

void

테스트에서 엄격한 타입 비교를 활성화/비활성화합니다.

active([$state = TRUE])
매개변수:
  • $state (bool) – 테스트 활성화 여부

반환 형식:

void

단위 테스트를 활성화/비활성화합니다.

result([$results = array()])
매개변수:
  • $results (array) – 테스트 결과 목록

반환:

원시 결과 데이터 배열

반환 형식:

array

원시 테스트 결과 데이터를 반환합니다.

set_template($template)
매개변수:
  • $template (string) – 테스트 결과 템플릿

반환 형식:

void

테스트 결과 표시를 위한 템플릿을 설정합니다.