PHP 버전 | 아톰 버전 |
---|---|
5.3 -> 5.6 | 1.x -> 3.x |
7.2 -> 8.1 | 4.X -> 4.1 |
8.x | 4.1 < 4.X(현재) |
SimpleTest 또는 PHPUnit과 마찬가지로 atoum은 PHP 언어 전용 단위 테스트 프레임워크입니다. 그러나 처음부터 다음 아이디어를 염두에 두고 설계되었습니다.
신속한 구현이 가능하며,
테스트 개발을 단순화하고 ,
신뢰할 수 있고 읽기 쉽고 명확한 단위 테스트를 작성할 수 있습니다.
이를 달성하기 위해 PHP 가 제공하는 기능을 대규모로 사용하여 개발자에게 단위 테스트를 작성하는 완전히 새로운 방법을 제공합니다. 따라서 개발자를 위한 유일한 진입점인 단일 PHAR 아카이브 이기 때문에 기존 프로젝트에 매우 쉽게 설치하고 통합할 수 있습니다. 또한 유창한 인터페이스 덕분에 자연어에 가까운 방식으로 단위 테스트를 작성할 수 있습니다. 또한 익명 함수와 클로저 의 지능적인 사용 덕분에 테스트 내에서 스텁을 구현하는 것이 더 쉬워졌습니다. atoum은 기본적으로 격리를 보장하기 위해 별도의 PHP 프로세스 내에서 각 단위 테스트를 실행합니다. 물론 지속적인 통합을 위해 원활하게 사용할 수 있으며, 디자인상 특정 요구 사항에 매우 쉽게 대처할 수 있습니다. Atoum은 또한 빠른 테스트 실행을 허용하면서 감소된 메모리 공간을 자랑하도록 개발되었기 때문에 성능에 영향을 주지 않고 이 모든 것을 수행합니다. 또한 Xunit 형식으로 단위 테스트 실행 보고서를 생성할 수 있으므로 Jenkins와 같은 지속적인 통합 도구와 호환됩니다. 또한 atoum은 단위 테스트를 감독할 수 있도록 코드 범위 보고서를 생성합니다. 마지막으로 UNIX를 중심으로 개발되었음에도 불구하고 Windows에서도 작동이 가능합니다.
atoum 은 설치가 정말 쉽습니다. github에서 복제하거나, PHAR을 다운로드하거나, 그냥 작곡가를 사용하세요.
atoum은 각 테스트 메서드를 자체 PHP 프로세스에서 격리하여 테스트 실행 중에 높은 수준의 보안을 제공합니다. 물론 이 기능은 기본적으로 사용 가능하므로 추가 확장 프로그램을 설치할 필요가 없습니다.
atoum은 병렬화된 환경에서 테스트를 실행하여 오늘날의 멀티 코어 CPU를 활용하여 제품군이 최대한 빠르게 실행되도록 합니다.
atoum은 테스트를 가능한 한 읽기 쉽게 만드는 자연스럽고 표현력이 풍부한 어설션의 모든 기능 세트를 제공합니다. 예는 다음과 같습니다.
<?php$this->정수(150) ->isGreaterThan(100) -> isLowerThanOrEqualTo(200) ;
atoum은 많은 구조적 키워드를 사용하여 BDD와 유사한 구문을 지원합니다.
<?php$this->given($testedInstance = newtestedClass()) ->그리고($testedClass[] = $firstValue = uniqid()) ->그런 다음->sizeof($testedInstance)->isEqualTo(1) ->문자열($testedClass[0])->isEqualTo($firstValue) ;
atoum은 간단하지만 매우 강력한 모의 엔진을 제공합니다.
<?php$this->given($testedInstance = newtestedClass()) ->and($aMock = new mockfoobar()) // 여기서는 foobar 클래스의 모의가 동적으로 생성됩니다.->and($this->calling($aMock)->doOtherThing = true) // doOtherThing(에 대한 각 호출 ) 인스턴스는 true->and($testedInstance->setDependency($aMock))를 반환합니다. ->then->boolean($testedInstance->doSomething())->isTrue() ->모의($aMock) ->call('doOtherThing')->withArguments($testedInstance)->once() // $aMock의 doOtherThing() 메서드가 한 번 호출되었음을 확인합니다.
atoum은 예외를 주장하기 위한 명확한 API를 제공합니다.
<?php$this->given($testedInstance = newtestedClass()) ->and($aMock = new mockfoobar()) // 여기서는 foobar 클래스의 모의가 동적으로 생성됩니다.->and($this->calling($aMock)->doOtherThing->throw = $Exception = new 예외( )) // doOtherThing()을 호출하면 예외가 발생합니다.->and($testedInstance->setDependency($aMock)) ->then->예외(function() 사용 ($testedInstance) { $testedInstance->doSomething(); }) ->isIdenticalTo($예외) ;
atoum을 사용하면 기본 PHP 함수를 모의할 수도 있습니다. 다시 말하지만, 이는 즉시 사용 가능합니다.
<?php$this->given($this->function->session_start = false) ->and($session = 새로운 testClass()) ->then->예외(함수 () 사용 ($session) { $session->start(); }) ->isInstanceOf('프로젝트네임스페이스예외') ->hasMessage('세션을 시작할 수 없습니다') ->function('session_start')->wasCalled()->한 번() ;
atoum은 TAP, clover, xUnit과 같은 여러 보고서를 생성하여 Jenkins 또는 기타 지속적인 통합 도구와 쉽게 통합할 수 있습니다.
Atoum은 데이터 제공자를 지원합니다.
Atoum 테스트는 자동 실행을 지원합니다. Atoum Runner를 포함하고 php path/to/test/file.php
사용하여 테스트를 시작하세요.
atoum 의 구성 파일은 최고의 유연성을 제공하는 PHP(XML, YAML 또는 기타 형식 없음)로만 작성되었습니다.
<?php$script->addDefaultArguments('--test-it', '-ncc');$runner->addTestsFromDirectory(__DIR__ . '/tests/units/classes');$testGenerator = 새로운 atumatoumtestgenerator();$ testGenerator->setTestClassesDirectory(__DIR__ . '/tests/units/classes'); ->setTestClassNamespace('atoumatoumtestsunits'); ->setTestedClassesDirectory(__DIR__ . '/classes'); ->setTestedClassNamespace('atoumatoum') ->setRunnerPath(__DIR__ . '/scripts/runner.php') ;$runner->setTestGenerator($testGenerator);
atoum은 자동 테스트 템플릿 생성기를 제공합니다.
Atoum은 실패한 테스트를 쉽게 다시 트리거할 수 있는 루프 모드를 제공합니다.
Atoum은 시간이 지나면서 발견하게 될 다른 흥미로운 기능들로 가득 차 있습니다.
Atoum이 작동하려면 PHP >= 5.6.0
이상이 필요합니다. UNIX에서는 올바른 PHP 버전이 있는지 확인하려면 터미널에서 다음 명령을 실행하면 됩니다.
$ PHP -v | grep -oE 'php 5.3.(?:[3-9]|[1-9][0-9])|5.[4-6].[0-9]+|[5-8].[ 0-9]+.[0-9]+'
PHP 5.6.x
또는 이에 상응하는 버전이 표시되면 올바른 PHP 버전이 설치된 것입니다. PHAR 아카이브를 사용하여 Atoum을 사용하려면 일반적으로 기본적으로 사용 가능한 phar
모듈에 액세스할 수 있도록 PHP가 필요합니다. UNIX에서는 이 모듈이 있는지 확인하려면 터미널에서 다음 명령을 실행하면 됩니다.
$ PHP -m | grep -i phar
Phar
또는 이에 상응하는 항목이 표시되면 모듈이 올바르게 설치된 것입니다. Xunit 형식으로 보고서를 생성하려면 xml
모듈이 필요합니다. UNIX에서는 이 모듈이 있는지 확인하려면 터미널에서 다음 명령을 실행하면 됩니다.
$ PHP -m | grep -i xml
Xml
또는 이에 상응하는 항목이 표시되면 모듈이 제대로 설치된 것입니다. 단위 테스트를 통해 코드의 적용 범위를 모니터링하려면 Xdebug 2.3 모듈이 필요합니다. UNIX에서는 이 모듈이 있는지 확인하려면 터미널에서 다음 명령을 실행하면 됩니다.
$ PHP -v | grep -oi 'xdebug'
Xdebug
또는 이에 상응하는 항목이 표시되면 모듈이 제대로 설치된 것입니다.
PHAR 아카이브를 다운로드하여 원하는 위치(예: /path/to/project/tests/atoum.phar
에 저장하면 됩니다. 이 PHAR 아카이브에는 Atoum 의 전체 단위 테스트를 통과하는 최신 개발 버전이 포함되어 있습니다. atoum 의 소스코드는 GitHub 저장소를 통해서도 보실 수 있습니다. Atoum이 구성에서 올바르게 작동하는지 확인하려면 모든 단위 테스트를 실행하면 됩니다. 그렇게 하려면 터미널에서 다음 명령을 실행하면 됩니다.
$ php atum.phar --test-it
선호하는 텍스트 편집기를 사용하여 path/to/project/tests/units/helloWorld.php
파일을 만들고 다음 코드를 추가합니다.
<?phpnamespace Vendorprojecttestsunits;require_once 'path/to/atoum.phar';include_once 'path/to/project/classes/helloWorld.php';use atoumatoum;use Vendorproject;class helloWorld는atoumtest를 확장합니다. {공개 함수 testSay() {$helloWorld = new projecthelloWorld();$this->string($helloWorld->say())->isEqualTo('Hello World!'); } }
터미널을 시작하고 다음 명령을 실행하십시오.
$ PHP 경로/테스트/파일[enter]
다음 결과 또는 이에 상응하는 결과를 얻어야 합니다.
> Frédéric Hardy의 Atoum 버전 XXX. 오류: 무인 예외: 테스트 클래스 'vendorprojecttestsunitshelloWorld'에 대해 테스트된 클래스 'vendorprojecthelloWorld'가 존재하지 않습니다.
선호하는 텍스트 편집기를 다시 사용하여 path/to/project/classes/helloWorld.php
파일을 만들고 다음 코드를 추가합니다.
<?phpnamespace Vendorproject;class helloWorld {공개 함수 say() {'Hello World!'를 반환합니다. } }
동일한 터미널에서 다음 명령을 다시 한 번 실행합니다.
$ PHP 경로/테스트/파일[enter]
다음 결과 또는 이에 상응하는 결과를 얻어야 합니다.
> Frédéric Hardy의 Atoum 버전 288.> VendorprojecttestsunitshelloWorld를 실행합니다... [S___________________________________________________________][1/1] => 테스트 기간: 0.00초. => 메모리 사용량: 0.25Mb.> 총 테스트 기간: 0.00초.> 총 테스트 메모리 사용량: 0.25Mb.> 코드 적용 범위 값: 100.00%> 실행 기간: 0.08초.> 성공(테스트 1개, 메서드 1개, 어설션 2개) , 오류 0, 예외 0)!
<?phpnamespace Vendorprojecttestsunits;require_once 'path/to/atoum.phar';include_once 'path/to/project/classes/helloWorld.php';use atoumatoum;use Vendorproject;class helloWorld는atoumtest를 확장합니다. {공용 함수 test__construct() {$helloWorld = 새 프로젝트helloWorld();$this->string($helloWorld->say())->isEqualTo('Hello!') ->string($helloWorld->say($name = '프레데릭 하디'))->isEqualTo('Hello' . $name . '!') ; } }
Atoum 의 문서는 아직 작성 중입니다. 이를 개선하는 데 도움을 주시면 감사하겠습니다. 그러나 Atoum 의 가능성을 즉시 더 자세히 살펴보고 싶다면 다음을 권장합니다.
터미널에서 php atoum.phar -h
명령 또는 php scripts/runner.php -h
명령을 실행합니다.
atoum 의 소스에서 구성 파일 샘플이 포함된 configurations
디렉터리의 내용을 탐색합니다.
모든 단위 테스트가 포함되어 있는 atoum 소스의 tests/unit/classes
디렉토리 내용을 탐색합니다.
온라인으로 제공되는 (프랑스어) 컨퍼런스 슬라이드를 읽어보세요.
(프랑스어) 위키를 읽어보세요.
토론 채널에 참여하세요.
support[AT]atoum(DOT)org 주소로 이메일을 보내 질문하세요.
이 경우 가장 먼저 해야 할 일은 최신 버전의 아카이브가 있는지 확인하는 것입니다. 다시 다운로드하면 됩니다. 그래도 작동하지 않으면 터미널 창에서 다음 명령을 실행하세요.
$ php -natoum.phar -v
Atoum 의 버전 번호를 얻으면 PHP 구성에서 문제가 발생하는 것입니다. 대부분의 경우 원인은 PHAR 형식과 호환되지 않거나 보안 조치로 PHAR 아카이브 실행을 방해하는 확장 프로그램 내에 있습니다. 예를 들어 ioncube
확장은 PHAR 아카이브와 호환되지 않는 것으로 보입니다. 따라서 이를 사용하는 경우 php.ini
에서 다음 줄에 주석을 달고 ;
접두사를 붙여 비활성화해야 합니다. 성격:
zend_extension = /path/to/ioncube_loader*.*
suhosin
확장은 PHAR 아카이브 실행을 방지하므로 atoum을 사용하려면 php.ini
파일에 다음 줄을 추가하여 기본 구성을 수정해야 합니다.
suhosin.executor.include.whitelist="phar"
마지막으로, Atoum을 실행하면 화면에 ???%
같은 문자가 표시된다면 이는 php.ini
파일 내의 detect_unicode
지시어가 1로 설정되어 있기 때문입니다. 문제를 해결하려면 다음과 같이 0으로 설정하면 됩니다. php.ini
파일을 편집하거나 다음 명령으로 Atoum을 실행합니다.
$ php -d detector_unicode=0atoum.phar [옵션]
이 세 가지 작업으로 Atoum이 작동하지 않으면 support[AT]atoum(DOT)org 주소로 구성 및 문제를 자세히 설명하는 이메일을 보내는 것이 좋습니다. Atoum 저장소의 토론 채널에서 Atoum 개발 직원에게 도움을 요청할 수도 있습니다.
__COMPILER_HALT_OFFSET__
이 이미 /path/to/atoum.phar
정의했습니다. 이 오류는 include
또는 require
사용하여 코드 내 두 곳 이상의 위치에 atoum PHAR 아카이브가 포함되어 있다는 사실에서 발생합니다. 이 문제를 해결하려면, 여러 번 포함되지 않도록 include_once
또는 require_once
만을 사용하여 아카이브를 포함하면 됩니다.
APC는 PHP 확장의 형태로 배포되는 PHP 중간 코드를 캐싱하고 최적화하기 위한 강력한 무료 개방형 프레임워크입니다. APC를 사용하는 클래스를 테스트할 때 apc_fetch
함수가 값을 검색할 수 없다는 오류 메시지가 나타날 수 있습니다. 모든 PHP 확장과 마찬가지로 APC에는 이를 활성화하는 몇 가지 구성 옵션이 있습니다.
apc.enabled
APC 활성화 또는 비활성화 여부,
apc.enable_cli
- PHP CLI용 APC를 활성화할지 비활성화할지 여부.
APC를 atoum 과 함께 사용하려면 apc.enabled
및 apc.enable_cli
1
로 설정해야 합니다. 그렇지 않으면 atoum 에서 사용하는 PHP CLI 버전에서는 활성화되지 않습니다.
Atoum 및 모의 객체를 사용할 때 PHP에서 세그폴트가 발생하는 경우가 있습니다. 이러한 세그폴트는 2.1.0 미만 버전의 XDebug로 인해 발생하며 경우에 따라 리플렉션을 처리하는 데 문제가 있습니다. XDebug의 현재 버전을 확인하려면 php -v
실행하세요. 이 문제를 해결하려면 XDebug를 최신 안정 버전으로 업데이트해야 합니다. 시스템에서 XDebug를 업데이트할 수 없는 경우에도 확장 기능을 비활성화하여 세그폴트를 방지할 수 있습니다. XDebug가 성공적으로 업데이트되었거나 비활성화되었는지 확인하려면 php -v
실행할 수 있습니다. XDebug 업데이트 또는 비활성화가 완료되면 php atoum.phar --test-it
실행하여 모든 세그폴트가 사라지고 Atoum이 작동하는지 확인하세요.
로드맵을 찾고 계십니까?
여기 진행중인 작업이 있습니다.
그리고 다음 릴리스에는 무엇이 나올까요?
Atoum은 Frédéric Hardy에 의해 만들어졌습니다. 이제 강력한 기여자 커뮤니티가 이를 주도하고 있습니다. 커미터 목록이나 기여자 팀에서 찾을 수 있습니다.
atoum은 BSD-3-Clause License에 따라 배포됩니다. 자세한 내용은 번들로 제공되는 LICENSE 파일을 참조하세요.