2012-10-25 2 views

답변

12

엄마/아빠/삼촌에게 그 사람을 보여 주면 assertGreaterThan이 훨씬 직관적입니다. 플러스 isGreaterThan의 실패 메시지가 훨씬 더 좋을 것이다

"1 was not greater than 2" 

또는

"false was not true" 

하나 표현 더? PHPUnit function-based assertions 또는 Hamcrest library를 사용

+1

Martin 감사합니다. 또한 내 친구가 언급 한 내용을 추가해야합니다. "도서관은 확장 성이 있습니다. 그래서 어떤 이유로 든 GreaterThan 수표가 특별한 것을하기를 원한다면, 그것은 자신의 일상을 확장하고 정의하는 문제 일 것입니다." – Spot

0

누가 이렇게 말한다 ...보다 낫다? 둘 다 좋았습니다. 가독성은 두 경우 모두 다르지만 둘 다 특히 좋습니다. 당신은 몇 가지 변수를 추출하여 그것을 더 향상시킬 수

$minimumValue = 2; 
$this->assertGreaterThan($minimumValue, $result); 

그리고

$resultGreaterThanMinimumValue = $result > 2; 
$this->assertTrue($resultGreaterThanMinimumValue); 

이 아직도 이상적입니다 (그 영어 문장처럼 읽을 수없는 주장 때문에), 그러나 그 두도 접근법이 더 좋습니다.

+0

감사합니다. 고맙습니다. – Spot

3

사실, 최고의 방법은 가독성을 더 나은 오류 메시지를 제공합니다.

assertThat(count($users), greaterThan(2)); 

>> Expected: greater than 2 
>>  but: was 1 

또는

assertThat($users, arrayWithSize(greaterThan(2))); 

>> Expected: array with size greater than 2 
>>  but: was array with size 1 

당신은 항상 첫 번째 주장 메소드에 매개 변수 또는 Hamcrest의 assertThat 기능 또는 phpunit을의 assertThat 함수의 세 번째 매개 변수로 문자열을 추가하여 주장과 함께 읽을 수있는 오류 메시지를 제공 할 수 있습니다 :

self::assertTrue('At least one user found', !empty($users)); 

>> At least one user found 
>> Expected: true 
>>  but: false 

또는

assertThat('At least one user found', !empty($users), is(true)); 

>> At least one user found 
>> Expected: true 
>>  but: false 
+0

햄 크레스트 아주 좋아 보인다. 나는 이것을 진지하게 바라 볼 것입니다.귀하의 경험에서 Hamcrest는 PHPUnit 확장에 영향을 줍니까? 감사합니다 – Spot

+0

@ 스팟 - 우리는 아무런 문제없이 2 년 이상 함께 사용해 왔습니다. PHPUnit이 수행 된 어설 션의 수를 세게하려면'runBare'를 오버라이드하는 [custom test case] (https://gist.github.com/3965902)를 사용해야합니다. 우리가했던 것처럼 여러분이 이미 추상적 인 테스트 케이스를 가지고 있다면 이것을 추가하는 것은 쉽지 않습니다. –

관련 문제