SqueakByExample:7.7: Difference between revisions
Onionmixer (talk | contribs) (SBE SUnit의고급특징들 페이지 추가) |
Onionmixer (talk | contribs) (번역수정) |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
== | ==SUnit 의 고급 기능== | ||
TestResource 뿐만 아니라 | 현재버전의 SUnit 에는 TestResource 뿐만 아니라 assertion description string 과 log 지원, 그리고 테스트를 실패한경우 다시시작<sup>resumable</sup>이 가능한 기능등이 포함되어 있습니다. | ||
TestCase assertion 프로토콜은 프로그래머가 | |||
===Assertion description string=== | |||
TestCase 의 assertion 프로토콜은 프로그래머가 assertion 에 대한 명세<sup>description</sup>를 제공할 수 있도록 해주는 몇가지 메소드를 포함하고 있습니다. Description 은 문자열입니다; 만약 테스트 케이스가 실패하면 이 Description 문자열은 test runner 에 표시됩니다. 물론 이 Description 문자열을 동적으로 만들 수 도 있죠. | |||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
Line 15: | Line 17: | ||
TestCase 에서 description 과 관련된 메소드들은 다음과 같습니다: | |||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
#assert:description: | #assert:description: | ||
Line 24: | Line 27: | ||
===Log 지원=== | |||
앞에서 설명한 description 문자열은 Trascript 또는 file stream 과 같은 Stream 에 의헤 log로 출력될 수 있습니다. 만들어지는 테스트 클래스에 '''TestCase>>isLogging''' 메서드를 재정의 함으로써 log 의 진행여부를 선택할 수 있으며, log 를 진행하는경우 적합한 stream 을 반환하기위해 '''TestCase>>failureLog''' 메서드를 재정의 함으로써 log 의 결과를 어디로 출력할지 선택해야 합니다. | |||
===Continuing after a failure(테스트실패 이후의 지속)=== | |||
SUnit 에서는 테스트 실패 이후에, 진행되던 테스트를 지속해야할지에 대한 여부를 결정할 수 있습니다. 이것은 매우 강력한 기능으로써, 스몰토크에 의해 제공된 예외 메커니즘을 사용게 됩니다. 예제를 들어 이것이 어떤 용도에 사용될 수 있는지를 보겠습니다. 다음 테스트 표현식을 살펴보겠습니다: | |||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
aCollection do: [ :each | self assert: each even] | aCollection do: [ :each | self assert: each even ] | ||
</syntaxhighlight> | </syntaxhighlight> | ||
이번 경우, 짝수가 아닌 경우 | 이번 경우, 진행과정에서 짝수가 아닌 경우 컬렉션의 첫 번째 구성요소를 찾자마자 테스트는 정지됩니다. 그렇다 하더라도, 일반적으로는 테스트가 멈추기를 바라지도 않을거고, 얼마나 많은 구성요소들과 어떤 구성요소들이 짝수가 아닌지 확인을 원할수도 있으며, 아마도 이런 정보들을 지속적으로 log 할 필요가 있겠죠. 이렇게 테스트작업이 끝까지 계속되기 원하는경우, 이 작업을 다음처럼 변경하면 됩니다: | ||
<syntaxhighlight lang="smalltalk"> | <syntaxhighlight lang="smalltalk"> | ||
Line 52: | Line 55: | ||
위의 프로그램식은 실패하는 각 구성요소를 위해 지정된 log 시스템에 메시지를 출력합니다. 그리고 프로그램식은 실패 결과를 쌓아놓지는 않는데, 예를 들어 만약 assertion 이 여러분의 테스트 메서드에서 10번을 실패한다고 해도, 오직 한번의 실패 결과만 확인할 수 있다는 의미가 됩니다. 지금까지 살펴본 모든 assertion 메소드들이 문제가 있는경우 계속해서 실행되는것은 아닙니다; '''assert: p description: s''' 은 '''assert: p description: s resumable: false''' 와 같은 의미가 됩니다. | |||
==Notes== | ==Notes== |
Latest revision as of 05:36, 22 March 2013
SUnit 의 고급 기능
현재버전의 SUnit 에는 TestResource 뿐만 아니라 assertion description string 과 log 지원, 그리고 테스트를 실패한경우 다시시작resumable이 가능한 기능등이 포함되어 있습니다.
Assertion description string
TestCase 의 assertion 프로토콜은 프로그래머가 assertion 에 대한 명세description를 제공할 수 있도록 해주는 몇가지 메소드를 포함하고 있습니다. Description 은 문자열입니다; 만약 테스트 케이스가 실패하면 이 Description 문자열은 test runner 에 표시됩니다. 물론 이 Description 문자열을 동적으로 만들 수 도 있죠.
| e |
e := 42.
self assert: e = 23
description: 'expected 23, got ', e printString
TestCase 에서 description 과 관련된 메소드들은 다음과 같습니다:
#assert:description:
#deny:description:
#should:description:
#shouldnt:description:
Log 지원
앞에서 설명한 description 문자열은 Trascript 또는 file stream 과 같은 Stream 에 의헤 log로 출력될 수 있습니다. 만들어지는 테스트 클래스에 TestCase>>isLogging 메서드를 재정의 함으로써 log 의 진행여부를 선택할 수 있으며, log 를 진행하는경우 적합한 stream 을 반환하기위해 TestCase>>failureLog 메서드를 재정의 함으로써 log 의 결과를 어디로 출력할지 선택해야 합니다.
Continuing after a failure(테스트실패 이후의 지속)
SUnit 에서는 테스트 실패 이후에, 진행되던 테스트를 지속해야할지에 대한 여부를 결정할 수 있습니다. 이것은 매우 강력한 기능으로써, 스몰토크에 의해 제공된 예외 메커니즘을 사용게 됩니다. 예제를 들어 이것이 어떤 용도에 사용될 수 있는지를 보겠습니다. 다음 테스트 표현식을 살펴보겠습니다:
aCollection do: [ :each | self assert: each even ]
이번 경우, 진행과정에서 짝수가 아닌 경우 컬렉션의 첫 번째 구성요소를 찾자마자 테스트는 정지됩니다. 그렇다 하더라도, 일반적으로는 테스트가 멈추기를 바라지도 않을거고, 얼마나 많은 구성요소들과 어떤 구성요소들이 짝수가 아닌지 확인을 원할수도 있으며, 아마도 이런 정보들을 지속적으로 log 할 필요가 있겠죠. 이렇게 테스트작업이 끝까지 계속되기 원하는경우, 이 작업을 다음처럼 변경하면 됩니다:
aCollection do:
[:each |
self
assert: each even
description: each printString , ' is not even'
resumable: true]
위의 프로그램식은 실패하는 각 구성요소를 위해 지정된 log 시스템에 메시지를 출력합니다. 그리고 프로그램식은 실패 결과를 쌓아놓지는 않는데, 예를 들어 만약 assertion 이 여러분의 테스트 메서드에서 10번을 실패한다고 해도, 오직 한번의 실패 결과만 확인할 수 있다는 의미가 됩니다. 지금까지 살펴본 모든 assertion 메소드들이 문제가 있는경우 계속해서 실행되는것은 아닙니다; assert: p description: s 은 assert: p description: s resumable: false 와 같은 의미가 됩니다.