2011-12-20 2 views
4

최근 프로젝트에서 단위 테스트를 작성하기 시작했으며 모든 assert 문의 메시지 인수가 있음을 알게되었습니다.좋은 단위 테스트 메시지를 작성하는 방법

단위 테스트를 위해 좋은 메시지를 만드는 이유는 무엇입니까?

$cache->set('foo', 3); 
$this->assertEquals($cache->get('foo'), 3, 'what should i say?'); 

고마워요!

+0

"캐시의 foo 값은 3입니다."(_why_에 대해 더 많이 알았다면 대답의 3 분의 1은 예상되는 부분 임). 일반적으로 보유하고있는 테스트 케이스를 나타내는 긍정적 인 진술을 작성하십시오. (또한 http://stackoverflow.com/questions/1074928/should-the-junit-message-state-the-condition-of-success-or-failure를 참조하십시오.) –

답변

1

주 사실.

고려 :

$this->assertEquals($person->age, 21, "Age is 21") 

$this->assertEquals($person->age, 21, "Age of person born on 1990-12-20"); 

: 대 좋은 단위 테스트 메시지가 버그가 위치를 신속하게 추측 도움이 될 것입니다. 나쁜 것은 사냥에 더 많은 시간을 소비하게 만듭니다.

+2

물론 나이가 내년에 변경됩니다.) – holygeek

+0

@ holigeek 그래서 어느 것이 실제로 더 좋습니까? ''' $ this-> assertEquals ($ person-> age, 21, "Age is 21") ''' 이 메시지는 단지 assert 문을 반복하고 있습니다. 기본적으로 값을 추가하지 마십시오. – tiengtinh

1

저는 대개 그걸 멋지고 짧게 유지합니다. 테스트 대상입니다. 이 메시지는 잘못되었을 수있는 모든 것에 대한 이야기를 설명 할 필요는 없으며 독자를 올바른 방향으로 향하게해야합니다. 시험은 거기서부터 알아낼 수있을만큼 분명해야합니다.

일반적으로 테스트에 익숙하지 않은 사람은 적어도 약간의 컨텍스트를 가지며 테스트를 잘 아는 사람은 무엇이 잘못되었는지 정확히 알 수 있도록 메시지를 작성합니다. 뭔가 테스트가 잘못되었습니다).

위의 예에서 "foo '에 대한 캐시"와 같은 메시지가 표시되어 "foo'에 대한 캐시가 예상대로 3이지만 67 일 것입니다." 테스트에 익숙한 사람은 "예상 3보다 더 유용 할 것이지만 테스트 abc의 123 행에서 67입니다."

는 (나는 주로 자바 개발자, 그래서 나는이 JUnit을하는 것처럼 말하는거야;. 나는 phpunit을 가정하거나 같은 방법에 대한 작업을 불렀다 무엇이든) 시험

관련 문제