SqueakByExample:7.7

From 흡혈양파의 번역工房
Revision as of 09:03, 16 August 2012 by Onionmixer (talk | contribs) (SBE SUnit의고급특징들 페이지 추가)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

SUnit의 고급 특징들

TestResource 뿐만 아니라, SUnit의 현재 버전은 assertion description string과 로그 지원(logging support) 그리고 재개 가능한 테스트 실패들을 포함하고 있습니다.

Assertion description string (주장 기술 문자열)

TestCase assertion 프로토콜은 프로그래머가 assertion의 description을 공급할 수 있도록 해주는 여러 개의 메소드를 포함합니다. Description은 문자열(string)이며 만약 test case가 실패하면 이 문자열은 test runner에 의해 표시될 것입니다. 물론 이 문자열은 동적으로 구축될 수(constructed ) 있습니다.

| e |
e := 42.
self assert: e = 23
  description: 'expected 23, got ', e printString


TestCase에서 관련된 메소드들은:

#assert:description:
#deny:description:
#should:description:
#shouldnt:description:


로그 지원(Logging support)

위에 기술된 description 문자열은 Trascript 또는 file stream 과 같은 Stream에 로그될 수 있을 것입니다. 여러분은 여러분의 테스트 클래스(test class)에 TestCase»isLogging를 재정의 함으로써 로그를 해야 할지의 여부를 선택할 수 있으며, 또한 여러분은 적합한 stream을 답하기 위해 TestCase»failureLog를 재정의 함으로써 어디에 로그를 해야 할 지 반드시 선택해야 합니다.


실패 이후의 지속

SUnit은 또한 실패(failure)이후에, 우리가 test가 지속되어야 할 지의 여부를 지정할 수 있도록 해줍니다. 이것은 매우 강력한 기능으로써, 스몰토크에 의해 제공된 예외 메커니즘(the exception mechanisms)을 사용합니다. 이것이 어떤 용도에 사용될 수 있는지를 보기 위해, 예시를 봅시다. 다음 테스트 표현식을 고려해 보십시오:


aCollection do: [ :each | self assert: each even]


이번 경우, 짝수가 아닌 경우 컬렉션(the collection)의 첫 번째 구성요소를 테스트가 찾자마자 테스트가 정지됩니다. 그럼에도 불구하고, 우리는 보통 계속 지속하기를 원하고 얼마나 많은 구성요소들과 어떤 구성요소들이 짝수가 아닌지 보기를 원하며 아마도 이 정보에 로그 하는 것 또한 원할 것입니다. 여러분은 이 작업을 다음과 같이 하실 수 있습니다:


aCollection do:
[:each |
self
  assert: each even
  description: each printString , ' is not even'
  resumable: true]


이 표현식들은 실패하는 각 구성요소를 위해 여러분의 로그 시스템(logging system)에 메시지를 인쇄할 것입니다. 이 표현식들은 실패들을 축적하지 않습니다. 예를 들어 만약 assertion이 여러분의 test 메소드에서 10번 실패한다면, 여러분은 오직 한번의 실패만을 보게 될 것입니다. 우리가 본 모든 다른 assertion 메소드는 다시 재개 되지 않습니다. assert: p description: sassert: p description: s resumable: false 와 등가물입니다.

Notes