SimpleTest와 PHPunit


127

이 두 가지에 대한 경험이있는 사람이 있다면 둘 사이의 중요한 차이를 밝힐 수 있는지 궁금 합니다.

특정 경우에 적합하도록 각각의 특정 강도?


PHPUnit을 선택했을 때 훨씬 좋습니다
joao baptista

9
... 그리고 왜? 답변을 설명하고 리소스 / 링크 / 예제를 제공하십시오
Manuel

<snark> 둘 다 왜
안되나요

답변:


90

이 질문은 꽤 오래되었지만 여전히 트래픽과 답변을 얻고 있기 때문에 여기에 다시 요점을 언급했지만 다른 (최신) 질문에 대해서는 이미 설명했습니다.

정말 정말 SimpleTest 그 당황 여전히 phpunit을 대안으로 간주됩니다. 어쩌면 내가 잘못 알고 있지만 내가 본 한

  • PHPUnit이 표준입니다. 대부분의 프레임 워크는이를 사용합니다 (Zend Framework (1 & 2), Cake, Agavi, 심지어 Symfony도 Symfony 2에 자체 프레임 워크를 phpunit에 적용).
  • PHPUnit은 모든 PHP IDE (Eclipse, Netbeans, Zend Stuide, PHPStorm)에 통합되어 있으며 잘 작동합니다.
  • Simpletest는 PHP 5.1 (일명 구식)의 일식 확장을 가지고 있으며 다른 것은 없습니다.
  • PHPUnit은 코드 커버리지 및 테스트 보고서에 대한 모든 표준 로그 파일을 출력하므로 모든 지속적인 통합 서버에서 잘 작동합니다.
  • 가장 간단한 것은 아닙니다. "그냥 테스트"를 중단하고 소프트웨어 개발을 시작하면 시작하는 데 큰 문제는 아니지만 큰 시간을 물게됩니다.
  • PHPUnit은 적극적으로 유지 관리되고 안정적이며 모든 코드베이스, 모든 시나리오 및 테스트 작성 방법에 적합합니다.
  • (주관) PHPUnit은 Simpletest보다 훨씬 더 나은 코드 커버리지 보고서를 제공합니다
  • PHPUnit을 사용하면 IDE ( Netbeans , Eclipse 등) 내부에서 이러한 보고서를 얻을 수 있습니다 .
  • 또한에 대한 몇 가지 제안이 있습니다 web interface to phpunit tests.

아직 SimpleTest에 찬성하는 주장을 보지 못했습니다. PHPUnit은 pear를 통해 사용 가능하므로 설치가 더 간단하지 않습니다.

pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit

"첫 번째 테스트"는 거의 동일하게 보입니다.

현재는 PHPUnit 3.7다음을 사용하여 설치 하기가 훨씬 쉽습니다 .PHAR Archive

wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit-3.7.6.phar

또는 Windows 에서 phar를 다운로드 하여 실행 중입니다.

php phpunit-.phar

또는 지원되는 작곡가 설치 방법을 사용할 때

"require-dev": {
    "phpunit/phpunit": "3.7.*"
}

당신의 composer.json에.


PHPUnit을 테스트하려는 모든 것에 솔루션이 있으며 거의 ​​모든 곳에서 도움말을 찾을 수 있습니다 (SO, #phpunit irc 채널, freenode, 거의 모든 PHP 개발자;))

내가 잘못 말하거나 무언가를 잊어 버린 경우 저를 수정하십시오 :)

PHP 테스팅 툴 개요

비디오 : http://conference.phpnw.org.uk/phpnw11/schedule/sebastian-bergmann/

슬라이드 : http://www.slideshare.net/sebastian_bergmann/the-php-testers-toolbox-osi-days-2011

Atoum 과 같이 "PHP를위한 단순하고 현대적이며 직관적 인 단위 테스트 프레임 워크!"라고 언급합니다.


전체 공개

원래 PHP 답변 프로젝트와 관련이없는이 답변을 2011 년 1 월에 작성했습니다. 그 이후로 PHPUnit에 기여했습니다.


5
나는 phpunit의 웹 테스팅보다 simpletest의 웹 테스팅이 설정하고 실행하는 것이 훨씬 쉽다는 것을 발견했다. PHP에는 거의 필요하기 때문에 중소 규모 프로젝트의 경우 승리합니다. 여기서는 테스트 프레임 워크를 즉시 던지기를 원하며 중요한 것은 간단한 수준의 테스트입니다. 예를 들어, 웹 테스트를 제외하고는 간단한 테스트에서만 assertTrue () 메서드를 사용하는 경향이 있습니다. 물론 웹 테스트는 더 복잡해 지지만 지나치게 복잡 할 필요는 없습니다.
Kzqai

1
"> php를 사용하는 것이 거의 필요하기 때문에"-나는 이것에 강력히 동의하지 않습니다. 브라우저를 통해 테스트를 실행 하는 PHP 프로젝트 (또는 프레임 워크)를 아직 보지 못했습니다 . 실제로 이익을 얻지 못하는 데 많은 문제가 발생합니다. ftp 동기화를 사용하는 공유 호스팅 시스템에서 PHP 코드가 개발 된 시간은 죽었고 사라졌습니다 ( 손가락이 엇갈림 ). 작더라도 프로젝트에는 실행중인 웹 서버가 필요하지 않습니다 (최대 한 개의 PHP가 기본적으로 제공됩니다). UNIT cli 또는 IDE가 아닌 브라우저를 통한 테스트는 그다지 중요하지 않다는 드문 유스 케이스입니다.
edorian

13
PHPUnit보다 SimpleTest를 고려해야하는 강력한 이유는 후자가 테스트를 실행하는 서버에 설치해야하는 명령 행 도구이기 include때문에 SimpleTest .PHP 파일을 단순히 ing하는 것보다 훨씬 어렵다는 것입니다 (다른 사람들이 설명했듯이). 전문 프로그래머가 자신의 테스트 환경 phpunit을을 구축하기위한 이길 하드 소리를하지만, PHP 기반 오픈 소스 응용 프로그램으로 테스트 시스템을 통합 할 경우 경우 "개발자" 응용 프로그램에 대한 가장이있을 수 있습니다 (I 부르는) "직업 프로그래머" 다음 SimpleTest의 단순함은 어쨌든 정말 매력적입니다. FWIW.
MikeSchinkel

2
@MikeSchinkel 더 동의 할 수 없었습니다. 우리는 맞춤형 애플리케이션 프레임 워크를위한 통합 브라우저 기반 테스트 솔루션으로 SimpleTest를 사용했습니다. 항상 사용 가능했으며 프레임 워크 소스에 포함되어 있기 때문에 svn 풀 이외의 설치 구성이 필요하지 않았습니다. CIS 통합을 위해 PHPUnit으로 옮겼습니다. 우리는 Windows 상점이기 때문에 PHPUnit은 설치 및 구성하기에 악몽이 될 수 있으며 많은 주니어 개발자들은 단순히 환경을 파괴하거나 테스트 의지를 잃어 버립니다.
Gavin

1
슬라이드 링크가 끊어졌습니다.
Dmitri Zaitsev

35

지금은 PHPUnit을 선호하지만 시작했을 때 항상 명령 줄에 액세스 할 수있는 것은 아니기 때문에 SimpleTest를 사용했습니다. SimpleTest는 훌륭하지만 실제로는 PHPUnit에 대해 유일하게 가지고있는 것은 웹 러너입니다.

PHPUnit을 좋아하는 이유는 phing (SimpleTest 와 마찬가지로 ), phpUnderControlXinc 와 같은 다른 PHP 개발자 도구와 통합 되기 때문 입니다. 버전 3.0부터는 조롱 지원이 있으며 적극적으로 개발되고 있으며 문서가 우수합니다.

실제로이 질문에 스스로 대답하는 유일한 방법은 두 가지를 모두 시도해보고 어떤 스타일에 더 잘 맞는지 확인하는 것입니다.

편집 : Phing은 이제 SimpleTest와 통합됩니다.


4
그냥 참고의 phing 웹 사이트는 SimpleTest을 지원 말한다
philfreo

18
  • PHPUnit을 다운로드하고 설치하는 방법을 이해할 수 없었습니다.
  • 그러나 SimpleTest를 설치하는 방법을 쉽게 이해할 수 있습니다.

    (내가 PHPUnit에 대한 지침을 기억할 수있는 한 "PEAR를 통해 설치하면 다른 방법으로 지침을 제공하지 않습니다")를 참조하십시오.

  • http://www.phpunit.de/manual/current/en/installation.html

들어 SimpleTest , 그냥 다운로드하여 코드에서 가리 킵니다.

그래서 가장 간단한 것이 나에게 이겼다.


4
답을 게시 한 후 설명서가 변경되었다고 생각합니다. 오늘은 3 개의 명령 만 입력하면 설치되므로 직접 다운로드하지 않아도됩니다.
Anti Veeranna

5
PEAR를 통해 PHPUnit을 설치하거나 수동으로 다운로드하거나 github에서 최신 코드를 가져올 수 있습니다. 홈페이지에 설치 지침에 대한 명확한 링크가 있습니다. SimpleTest는 소스 포지 (sourceforge)를 가리키는 하나의 옵션 만 제공합니다. 수많은 광고가 ...
Potherca

1
Windows에서는 PHPUnit을 설치하기가 쉽지 않습니다. 나는 2 워크 스테이션에 설치해야했다. 첫 번째는 PEAR IRC 샤넬의 도움으로 3 시간이 걸렸습니다. 두 번째 (동일한 OS)의 경우 결코 성공하지 못했습니다. 리눅스에서 그것은 매력이다.
FMaz008

1
SimpleTest +1 쉬운 설치 사용하기 쉽습니다. 그러나 PHPUnit은 내 요구를 충족시키는 가장 간단한 것보다 강력합니다.
Cheung

'09 년 이후 상황이 바뀌었을 수도 있지만, PHPUnit은 몇 초만에 Windows에서 몇 가지 명령으로 설치되었습니다.
Cypher


13

허용 된 답변에서 언급 된 요점의 절반은 단순히 사실이 아닙니다.

SimpleTest

  • 간편한 설정 (폴더 추출, 포함 및 실행)
  • 단순히 폴더를 버전 관리로 확인하십시오 (요즘 phpunit으로 시도하십시오 :))
  • 적은 의존성과 많은 확장 (webtester, formtester, auth)
  • 확장하기 쉬운 코드 커버리지 리포터 (도트, 함수 이름, 색상)
  • 코드 커버리지 요약 (PHPUnit 4.x에 최종 제공)
  • 그룹 및 단일 파일 실행을 갖춘 괜찮은 웹 러너 및 ajax 웹 러너
  • 여전히 더 나은 diff 도구 (공백 또는 줄 바꿈 문제 없음)
  • phpUnit으로 SimpleTests를 실행하기위한 어댑터 / 래퍼
  • 호환성 PHP5.4 +

단점 :

  • 산업 표준 아님 (PHPUnit)
  • 적극적으로 유지되지 않는

1
나와 상사 php4 서버에 여전히 유용합니다 ^^ "
javier_domenech

감사. 최신 PHP 버전에서 작동하도록 SimpleTest의 코드 기반을 업그레이드했으며 1 년 동안 더 많은 조정이 이루어지고 있습니다. -PHP4는 오래된 EOL이며 보안 패치가 없습니다. 더 이상 외부 서비스에서 사용하지 않을 것입니다. 사장님이 최소 v5.5 이상의 v5.6으로 업데이트를 실행하도록 설득해야합니다. php.net/supported-versions.php#php-5.6
Jens A. Koch

나는 조언을 주셔서 감사합니다. 매우 훌륭한 테스트 솔루션
javier_domenech

1
=) Github 저장소를 보여 주셔서 감사합니다. 나는 "비 유지 비트"에 대해 걱정하기 시작했다. 그것은 내가 다루는 현대 코드로 저주파 테스트 프레임 워크에서 내가 원했던 모든 것을 여전히 수행하기 때문에 피상적입니다.
jeteon

SimpleTest는 PHP 코드로 모든 작업을 수행 할 수 있으므로 테스트 스위트를 설정하는 방법이 훨씬 유연합니다. 따라서 XML 설정 파일 및 터미널 매개 변수뿐만 아니라 전체 프로그래밍 언어를 자유롭게 사용할 수 있습니다. PHPUnit은 도구에 의해 더 많이 지원 될 수 있지만, PHP 커뮤니티가 어떻게 열등한 것을 뒷받침하는 방법에 대해 더 많이 설명합니다.
still_dreaming_1

8

SimpleTest가 PHPUnit보다 설정하기가 훨씬 쉽다는 것을 알았습니다. 그냥 추출하면 좋습니다. 이 방법의 장점은 전체 테스트 프레임 워크를 소스 코드와 동일한 방식으로 저장할 수 있으므로 동일한 프레임 워크 코드를 사용하고 있다는 사실을 알기 때문에 둘 이상의 시스템에서 작업하는 경우 이점이 있습니다. 특히 어떤 식 으로든 수정 한 경우.

따라서 SimpleTest의 장점은 매우 가볍고 휴대하기 쉽다는 것입니다.

SimpleTest는 또한 매우 간단한 HTML GUI와 함께 제공되므로 원하는 경우 쉽게 확장 할 수 있습니다. 내가 아는 한 PHPUnit에는 HTML GUI가 포함되어 있지 않지만 Cool 과 같은 GUI :를 다운로드 할 수 있습니다 .


아, 나는 우연히 이것을 완전히 downvoted하고 다음날까지 그것을 깨닫지 못했습니다. 이제 내 투표가 잠겨 있습니다. 죄송합니다.
still_dreaming_1

8

글쎄, phpUnit 웹 기반 UI 테스트 사례 러너를 만들고 sourceforge에서 사용할 수있게했습니다. ajax를 사용하고 sourceforge에서 샷 검사를하고 싶다면 멋진 인터페이스를 제공합니다. 프로젝트 이름은 phpunitwebui이고 웹 사이트는 http://phpunitwebui.sourceforge.net/


4

지적한 바와 같이, 둘 다 사용자가 작성한 테스트를 실행하고 결과를 다시보고하므로 주로 선호하는 선택입니다.

가장 간단한 웹 UI는 매우 유용하지만 때로는 성 가실 수도 있습니다. 현재 프로젝트에서 웹 응용 프로그램 (아파치를 올바르게 설정하고 파일을 public_html 루트에 복사하는 등)에서 웹 응용 프로그램 (API)이 작동하도록하려면 더 많은 작업을 시스템에 넣어야했습니다. 단순히 Eclipse 작업 공간에서 phpunit을 실행하십시오. 따라서 PHPUnit을 선택합니다. 또한 업데이트를 수동으로 추적 할 필요가 없으므로 PEAR 사용이 큰 도움이되었습니다. pear upgrade한 번만 실행 하면 PHPUnit이 최신 상태로 유지됩니다.


나는이 분석을 얻지 못한다. 로컬 아파치 설정 대신 phpunit 용 이클립스 플러그인을 통해 브라우저 유형 기능을 테스트하고 있습니까?
Kzqai

아니요, 내 프로젝트에서 브라우저 유형 기능이 없으므로 Eclipse를 통해 phpunit을 사용하고 있다고 말하고 있습니다.
T0xicCode

2

이것은 매우 캐주얼 한 PHP 개발자의 관점에서 볼 수 있습니다.

PHPUnit을 파악하는 데 2 ​​일이 걸렸습니다. 주로 드디어 포기한 Eclipse에서 디버그하려고했습니다.

Eclipse에서 디버그를 포함하여 Simpletest를 설정하는 데 2 ​​시간이 걸렸습니다.

어쩌면 앞으로 Simpletest의 단점을 찾을 수 있지만 지금까지 필요한 상황은 TestClasses, Mock 객체, 테스트 코드 디버깅 및 상황의 빠른 스냅 샷을위한 웹 인터페이스입니다.

다시 : 이것은 매우 캐주얼 한 PHP 사용자 관점에서 볼 때 (개발자조차도 :-)


1

나는 간단한 테스트를 한동안 확인하지 않았다. 마지막에는 일식 플러그인이 있었는데, 그것은 중요한 요소이지만 오랫동안 업데이트되지 않았다. Sebastian Bergmann은 여전히 ​​PHPUnit을 적극적으로 연구하고 있지만 여전히 식용 플러그인이 부족하지만 새로운 Zend Studio에 포함되어 있습니다.


1

이 질문은 오래되었지만 경험을 추가하고 싶습니다. PHPUnit은 이제 표준으로 보이지만 많은 글로벌 변수를 사용하는 레거시 시스템으로 작업하면 시작에 갇힐 수 있습니다. PHPUnit에서 전역 변수로 테스트를 수행하는 좋은 방법이없는 것처럼 보입니다. $ GLOBALS를 통해 변수를 설정 해야하는 것 같습니다. 글로벌 변수를 어디에나 설정하는 수많은 파일이 있으면 좋지 않습니다. 문제는 레거시 시스템에 문제가 있다고해서 그런 시스템에서 테스트를 수행 할 수 없다는 의미는 아닙니다. SimpleTest를 사용하면 그러한 것이 간단합니다. PHPUnit이 클래스 / 함수 범위 내에서가 아니라 파일을 전역 적으로 포함시킬 수 있다면 너무 문제가되지 않을 것이라고 생각합니다.

또 다른 유망 솔루션입니다 http://www.enhance-php.com , 좋은 :) 보이는


나는 항상 <phpunit backupGlobals="false">구성 XML에서 사용 하고 테스트에서 전역에 아무런 문제가 없었습니다 ...
Potherca

@ mr1031011 링크가 유용하지 않습니다. 아마도 당신은 의미? github.com/Enhance-PHP/Enhance-PHP
user12345을

@Potherca는 그것에 대해 알려줍니다. 처음에는 레거시 코드 프로젝트에서 전역에 많은 문제가 global $xxx있었고 모든 시도를하기 전에 --no-globals-backup갑자기 @backupGlobals @backupStaticAttributes @runInSeparateProcess @preserveGlobalState 및 모든 조합을 시도했습니다. 예상대로 작동합니다. : D
conny

-2

한 번에 수천 가지 기능을 테스트 할 때 phpunit은 갈 길입니다. 웹 기반으로는 간단한 테스트가 부족합니다.

소규모 테스트를 위해 간단한 웹을 사용하고 있습니다.

그러나 둘 다 좋다


SimpleTest는 순전히 웹 기반 이 아닙니다 . 지금까지 커맨드 라인에서 독점적으로 사용했습니다.
jeteon
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.