SqueakByExample:7.5: Difference between revisions

From 흡혈양파의 번역工房
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 54: Line 54:
===테스트 클래스(a test class)에서 모든 테스트들을 실행하기===
===테스트 클래스(a test class)에서 모든 테스트들을 실행하기===


TestCase의 모든 서브클래스들은 메시지 스위트(the message suite)에 응답할 것이며, 이 응답은 문자열 "test"로 시작하는 이름을 가진 클래스에 있는 모든 메서드들을 포함하는 테스트 스위트(a test suite)를 구축할 것입니다. 그 스위트에서 테스트들을 실행하려면 그 스위트에 메시지 run을 발송합니다. 예를 들면:
TestCase의 모든 서브클래스들은 메시지 슈트(the message suite)에 응답할 것이며, 이 응답은 문자열 "test"로 시작하는 이름을 가진 클래스에 있는 모든 메서드들을 포함하는 테스트 슈트(a test suite)를 구축할 것입니다. 그 슈트에서 테스트들을 실행하려면 그 슈트에 메시지 run을 발송합니다. 예를 들면:


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">
Line 63: Line 63:
===TestCase를 하위분류(subclass)해야만 하나요?===
===TestCase를 하위분류(subclass)해야만 하나요?===


JUnit에서, 여러분은 test* 메서드들을 포함하고 있는 임의의 클래스로부터, TestSuite를 구축할 수 있습니다. 스몰토크에서, 동일한 작업을 하실 수 있지만, 손수 직접 스위트(suite)를 만들어야만 하며, 여러분의 클래스는 assert:와 같은 모든 필수적인 TestCase 메서드들을 실행하게 될 것입니다. 우리는 여러분에게 이 작업을 시도하지 않으실 것을 권장합니다. 존재하는 프레임 워크를 사용하십시오.
JUnit에서, 여러분은 test* 메서드들을 포함하고 있는 임의의 클래스로부터, TestSuite를 구축할 수 있습니다. 스몰토크에서, 동일한 작업을 하실 수 있지만, 손수 직접 슈트(suite)를 만들어야만 하며, 여러분의 클래스는 assert:와 같은 모든 필수적인 TestCase 메서드들을 실행하게 될 것입니다. 우리는 여러분에게 이 작업을 시도하지 않으실 것을 권장합니다. 존재하는 프레임 워크를 사용하십시오.


<syntaxhighlight lang="smalltalk">
<syntaxhighlight lang="smalltalk">

Revision as of 05:17, 30 August 2012

SUnit cook book

이 섹션은 여러분에게 Sunit을 사용하는 방법에 대한 좀 더 세부적인 사항들을 부여할 것입니다. 만약 여러분이 JUnit[1]과 같은 다른 테스트 프레임워크를 사용해 보셨다면, 이 내용 중 많은 부분이 친숙하실 것이며, 그 이유는 이 모든 프레임 워크들이 그 근간을(root) SUnit에 두고 있기 때문입니다. 보통 여러분은 테스트들을 실행하기 위해 SUnit의 GUI를 사용할 것이지만, 여러분이 GUI를 사용하기를 원치 않을 상황들이 존재합니다.


다른 주장들(Other assertions)

assert:와 deny: 뿐만아니라, 주장들(assertions)을 만들기 위해 사용될 수 있는 여러개의 다른 메서드들이 있습니다.

제일 먼저, assert:description:과 deny:description:은 테스트 자체로 분명하지 않을 경우, 실패의 이유를 기술하기 위해 사용될 수 있는 메시지 문자열인 두 번째 인수를 취합니다. 이 메서드들은 섹션 7.7에 설명되어 있습니다.

그 다음, SUnit은 예외 전달(exception propagation)을 테스트 하기 위해 두 개의 추가 메서드인 should:raise:와 shouldnt:raise:를 제공합니다. 예를 들면, 여러분은 aBlock을 실행하는 동안 제기된 특별한 예외인 테스트에 (self should: aBlock raise: anException)을 사용할 것입니다. 메서드 7.7은 should:raise의 사용을 묘사하였습니다.


Squeak comment.png이 테스트 실행을 시도하십시오.


Should:의 첫 번째 인수와 shoudnt: 메서드는 평가될 표현식을 포함하고 있는 블록임인 것에 주의합니다.


메서드 7.7 발생하는 에러 테스트

ExampleSetTest»testIllegal
  self should: [empty at: 5] raise: Error.
  self should: [empty at: 5 put: #zork] raise: Error


SUnit은 이동 가능합니다: Sunit은 스몰토크의 모든 파생 언어들로(dialect) 사용될 수 있습니다. Sunit을 이동할 수 있게 만들기 위해, 그 개발자들은 파생언어-의존 측면들(the dialect-dependent aspects)을 추출하였습니다. 클래스 메서드 TestResult class»error는 언어-독립 방식으로 (dialect-independent fashion) 시스템의 에러 클래스(error class)를 답변으로 내놓습니다. 여러분이 작성할 메서드 7.7 대신에, 모든 스몰토크 파생 언어에서 작동할 테스트들을 작성하기 원하신다면, 이 SUnit을 활용하십시오.


메서드 7.8: 이동 가능한 에러 취급 (Portable error handling)

ExampleSetTest»testIllegal
  self should: [empty at: 5] raise: TestResult error.
  self should: [empty at: 5 put: #zork] raise: TestResult error


Squeak comment.png이것을 시도해 보십시오.


단일 테스트 실행하기

보통 여러분은, Test Runner를 사용하여 여러분의 테스트들을 실행할 것입니다. 만약 여러분이 open... 메뉴 도는 도구 플랩에서 Test Runner를 실행하기를 원치 않으시면, print it 으로 TestRunner를 실행할 수 있습니다.

여러분은 다음과 같이 단일 테스트를 실행할 수 있습니다.

ExampleSetTest run: #testRemove  1 run, 1 passed, 0 failed, 0 errors


테스트 클래스(a test class)에서 모든 테스트들을 실행하기

TestCase의 모든 서브클래스들은 메시지 슈트(the message suite)에 응답할 것이며, 이 응답은 문자열 "test"로 시작하는 이름을 가진 클래스에 있는 모든 메서드들을 포함하는 테스트 슈트(a test suite)를 구축할 것입니다. 그 슈트에서 테스트들을 실행하려면 그 슈트에 메시지 run을 발송합니다. 예를 들면:

ExampleSetTest suite run  5 run, 5 passed, 0 failed, 0 errors


TestCase를 하위분류(subclass)해야만 하나요?

JUnit에서, 여러분은 test* 메서드들을 포함하고 있는 임의의 클래스로부터, TestSuite를 구축할 수 있습니다. 스몰토크에서, 동일한 작업을 하실 수 있지만, 손수 직접 슈트(suite)를 만들어야만 하며, 여러분의 클래스는 assert:와 같은 모든 필수적인 TestCase 메서드들을 실행하게 될 것입니다. 우리는 여러분에게 이 작업을 시도하지 않으실 것을 권장합니다. 존재하는 프레임 워크를 사용하십시오.

ExampleSetTest suite run   5 run, 5 passed, 0 failed, 0 errors

Notes