제 양해 바랍니다. 나는 아직 단위 테스트 영역에 새로운입니다.PHPUnit에서 특정 어설 션이 일반적인 어설 션보다 나은 이유는 무엇입니까?
사람이 이유를 설명 할 수 ..
$this->assertGreaterThan(2, $result);
는 ..
$this->assertTrue($result > 2);
.. (마찬가지로, 다른 모든 특정 어설 방법)보다 더 ..is?
감사합니다.
제 양해 바랍니다. 나는 아직 단위 테스트 영역에 새로운입니다.PHPUnit에서 특정 어설 션이 일반적인 어설 션보다 나은 이유는 무엇입니까?
사람이 이유를 설명 할 수 ..
$this->assertGreaterThan(2, $result);
는 ..
$this->assertTrue($result > 2);
.. (마찬가지로, 다른 모든 특정 어설 방법)보다 더 ..is?
감사합니다.
엄마/아빠/삼촌에게 그 사람을 보여 주면 assertGreaterThan
이 훨씬 직관적입니다. 플러스 isGreaterThan의 실패 메시지가 훨씬 더 좋을 것이다
"1 was not greater than 2"
또는
"false was not true"
하나 표현 더? PHPUnit function-based assertions 또는 Hamcrest library를 사용
는
누가 이렇게 말한다 ...보다 낫다? 둘 다 좋았습니다. 가독성은 두 경우 모두 다르지만 둘 다 특히 좋습니다. 당신은 몇 가지 변수를 추출하여 그것을 더 향상시킬 수
$minimumValue = 2;
$this->assertGreaterThan($minimumValue, $result);
그리고
$resultGreaterThanMinimumValue = $result > 2;
$this->assertTrue($resultGreaterThanMinimumValue);
이 아직도 이상적입니다 (그 영어 문장처럼 읽을 수없는 주장 때문에), 그러나 그 두도 접근법이 더 좋습니다.
감사합니다. 고맙습니다. – Spot
사실, 최고의 방법은 가독성을 및 더 나은 오류 메시지를 제공합니다.
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
햄 크레스트 아주 좋아 보인다. 나는 이것을 진지하게 바라 볼 것입니다.귀하의 경험에서 Hamcrest는 PHPUnit 확장에 영향을 줍니까? 감사합니다 – Spot
@ 스팟 - 우리는 아무런 문제없이 2 년 이상 함께 사용해 왔습니다. PHPUnit이 수행 된 어설 션의 수를 세게하려면'runBare'를 오버라이드하는 [custom test case] (https://gist.github.com/3965902)를 사용해야합니다. 우리가했던 것처럼 여러분이 이미 추상적 인 테스트 케이스를 가지고 있다면 이것을 추가하는 것은 쉽지 않습니다. –
Martin 감사합니다. 또한 내 친구가 언급 한 내용을 추가해야합니다. "도서관은 확장 성이 있습니다. 그래서 어떤 이유로 든 GreaterThan 수표가 특별한 것을하기를 원한다면, 그것은 자신의 일상을 확장하고 정의하는 문제 일 것입니다." – Spot