์ ๋ฒ์ v3์์ ์๋๋ฆฌ์ค ๊ฒฐ๊ณผ.scenario.tags์ ์ก์ธ์คํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์ด์ ๋ชจ๋ธ ์๋๋ฆฌ์ค_๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ์ด๋ป๊ฒ๋ ํ ์คํธ ์ผ์ด์ค ์๋ฃ ์ด๋ฒคํธ๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๊น? ๊ฐ์ฌ ํด์
์๋์. ํ ์คํธ ์ผ์ด์ค์ ํ๊ทธ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ด์ ์๋๋ฆฌ์ค ๊ฒฐ๊ณผ๋ก ๋์๊ฐ ๊ณํ์ ์์ต๋๋ค. ํ๊ทธ๊ฐ ํ์ํ ์ฌ์ฉ ์ฌ๋ก๋ ๋ฌด์์ ๋๊น?
์ ๊ฒฝ์ฐ์๋ ํ๊ทธ ์์คํ ์ ์์กดํฉ๋๋ค. ํํฌ์์ ์ผ๋ถ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ ์ํด.
์ด ๊ฐ์:
<strong i="7">@SuiteName</strong> <strong i="8">@SuiteSectionName</strong> <- These tags tell the suite
Feature:
<strong i="9">@TC1563697</strong> <- This tag identifies the testcase in the test management tool <strong i="10">@New</strong>
Scenario:
Given
When
Then
ํน์ ํ๊ทธ๊ฐ ์๋ ์๋๋ฆฌ์ค์ ๋ํด์๋ง ์คํ๋๋ ํํฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. https://github.com/cucumber/cucumber-js/blob/v3.0.1/docs/support_files/hooks.md#tagged -hooks
๋ํ ์๋๋ฆฌ์ค ํ๊ทธ๋ฅผ ์๊ธฐ ์ํ ๋ช ๊ฐ์ง ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ๋ค์ sudo ์์ ๊ฐ ์ฃผ์ด์ง๋ฉด(1.3.1์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์๊ณ ์ต์ 3.0.1์ ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฒ์ ๊ตฌ๋ฌธ์ด ์ฝ๊ฐ ๋๋ฝ๋จ):
<strong i="6">@set_video</strong> <strong i="7">@youtube</strong>
Scenario: User should see youtube video
<strong i="8">@set_video</strong> <strong i="9">@vimeo</strong>
Scenario: User should see vimeo video
this.After({tags: @set_video}, function (testCase) {
let tags = testCase.scenario.tags;
_.forEach(tags, (function (tag) {
if(tag === '<strong i="10">@youtube</strong>') {
setVideo('youtube');
}
if(tag === '<strong i="11">@vimeo</strong>') {
setVideo('vimeo');
}
});
}
ํํฌ๋ฅผ ์ธ์ ์คํํด์ผ ํ๋์ง ์๋ ค์ฃผ๋ ํ๊ทธ๊ฐ ํ๋ ์๊ณ ๋ค๋ฅธ ์ฌ์ฉ ์ฌ๋ก์์ ์๋ํ๋๋ก ํํฌ๋ฅผ ๋ณด๋ค ๋์ ์ผ๋ก ๋ง๋๋ ๋ฐ์ดํฐ ์ญํ ์ ํ๋ ๋ค๋ฅธ ํ๊ทธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋์ผํ ๋ ผ๋ฆฌ๋ก ๋์ผํ ํํฌ๋ฅผ ๋ง๋ค๊ณ ์ ๋ฌํ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝํ๊ฒ ๋ฉ๋๋ค. ํ๊ทธ๋ฅผ ์๋ ๊ฒ์ ํํฌ๋ฅผ ๋ ์ ์ฐํ๊ฒ ๋ง๋๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ๊ณ ๊ฐ๋ ฅํ ๋๊ตฌ๋ผ๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค.
์ฌ๊ธฐ์์ 3.0.1์ After ํํฌ์์ ๊ฒฐ๊ณผ ๊ฐ์ฒด๋ฅผ ์ป์ ์ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. testCase, ์๋๋ฆฌ์ค ๊ฒฐ๊ณผ ๋ฐ ์๋๋ฆฌ์ค๋ฅผ ์๋ํ์ต๋๋ค. ๋ด๊ฐ ๋ญ๊ฐ๋ฅผ ๋์น๊ณ ์์ต๋๊น?
TestRail์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋ณด๊ดํ๊ณ ์คํ ์ ์ ๋ค์ด๋ก๋ํ์ฌ ๊ธฐ๋ฅ ํ์ผ๋ก ์ ์ฅํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ํํฌ์์ ์์ธํ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณด๋ ๋๋ค. ์ด๋ฌํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
scenario.getException()
์์ ๊ฐ์ ธ์ดstepResult
ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.๋ฐ๋ผ์ ์ค์ด 3.x์ ํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ์ธํด ์ธํ๋ผ๊ฐ ์์ ํ ์์๋๋ฏ๋ก ์ ํํ ์ ์์ต๋๋ค.
@pawelus ๋ด ์ธํ๋ผ๋ ์ ํํ ๋์ผํ ์์
์ ์ํํฉ๋๋ค.
์ด๋ฌํ ์์
์ ๋น๋๊ธฐ์์ผ๋ก ์ํํด๋ ์๋ฌด ๊ฒ๋ ์์ง ์๊ธฐ ๋๋ฌธ์(์ฆ, ์ค์ ํ
์คํธ ์ธํ๋ผ๋ TestRail ์
๋ฐ์ดํธ์ ๋ํด "๊ด์ฌ"ํ์ง ์์) ํด๋น ์ฝ๋๋ฅผ ์ฌ์ฉ์ ์ง์ ํฌ๋งทํฐ๋ก ์ด๋ํ๊ณ ์ด๋ฒคํธ์์ ์ค๋ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณด๊ณ ์๋ฅผ ์์ฑํ๊ณ ๋ณด๋ด๊ธฐ ์ํ ํ๋กํ ์ฝ์
๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ค์ด๋ฅผ ์์ํ๋ ๋ํผ ์คํฌ๋ฆฝํธ๊ฐ ์์ต๋๋ค.
์ค์ด๊ฐ ์์๋๊ธฐ ์ ์ TestRail ์๋๋ฆฌ์ค๋ฅผ ๋ค์ด๋ก๋ํ๋ฏ๋ก TestRail ๋ณด๊ณ ์ ์ฝ๋๋ฅผ ์ค์ด ํํฌ์์ ๋ํผ ์คํฌ๋ฆฝํธ๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์์ต๋๋ค.
์ค์ด๊ฐ ์๋ฃ๋ ํ ์คํฌ๋ฆฝํธ๋ ์ถ๋ ฅ๋ cucumberResults JSON์ ์ฝ๊ณ ๊ฑฐ๊ธฐ์์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ปดํ์ผํฉ๋๋ค.
์ด๋ ์ชฝ์ด๋ ์ฝ๋๋ฅผ ์ฌ์ ๋ ฌํด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋ชจ๋ ์ฌ์ /์ฌํ ์์
์ ๋ํผ ์คํฌ๋ฆฝํธ๋ก ์ด๋ํ๋ ๊ฒ์ V3์์ ์์ด๋ฒ๋ฆฐ ์ ์ด ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ฅผ ๋ณต์ํ๋ ์ข์ ์๋ฃจ์
์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ถ๋ ฅ๋ ๊ฒฐ๊ณผ๋ฅผ ํ๋ถํ๊ฒ ํ๊ธฐ ์ํด ์ค์ํ ์ปจํ
์คํธ ์ ๋ณด๋ฅผ ์ง๋ ฌํํด์ผ ํ๋ฏ๋ก(๊ด๋ จ ์ฝ๋๊ฐ ์คํ๋ ๋ ์ธํ๋ผ ์ํ๊ฐ ํ๊ดด๋๋ฏ๋ก) ์ฌ์ ํ ๋ค์ ๊ณ ํต์ค๋ฝ์ต๋๋ค. ํ์ง๋ง ๊ฐ๋ฅํฉ๋๋ค.
ํํฌ์์ ํ๊ทธ๋ฅผ ์๋ ๋ฅ๋ ฅ์ ์๋ ๊ฒ์ ๋ถ๋๋ฌ์ด ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ถ๊ฐ ํ๊ทธ๋ฅผ ์ถ๊ฐํ ๋ค์ ๋ค๋ฅธ ์ ๋ ฅ์ผ๋ก ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํด ํ์ฌ ์๋๋ฆฌ์ค์ ์ ์ฉ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค.
@yaronassa ์ฐ๋ฆฌ๋ Protractor๋ฅผ ํตํด ํ ์คํธ๋ฅผ ์คํํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ค์ด๋ฅผ ์ง์ ์คํํ์ง ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์์ ๊ณ์ฐํ ๋ ๋ค๋ฅธ ์ถ์ํ ๊ณ์ธต์ด ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋น์ ์ฒ๋ผ ๊ฐ๋๊ธฐ๊ฐ ์์๋๊ธฐ ์ ์ ๊ธฐ๋ฅ์ ๋ค์ด๋ก๋ํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ ๋ค๋ฅธ ์ด์ผ๊ธฐ์ ๋๋ค.
Selenium ๊ทธ๋ฆฌ๋์์ ์คํ๋๋ ์ค๋ฉ ๋ฐ ํ ์คํธ์ ์คํจํ ๊ธฐ๋ฅ์ ์ฌ์คํ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ๋ฐ๋ฅธ ์์๋ก ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ฒ์ ์๋นํ ๋ฒ๊ฑฐ๋กญ๊ณ ๋ณต์กํ ๋ ผ๋ฆฌ๊ฐ ๋ ๊ฒ์ ๋๋ค. ์ค์ด 1๊ณผ 2์์ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ์ ๋ณต์ํ๊ธฐ ์ํ ์๋นํ ์์ ์์ .
๋ํ ๋จ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ป๊ธฐ ์ํด์๋ง ์ฌ์ฉ์ ์ ์ ํฌ๋งทํฐ๋ฅผ ๋ง๋๋ ๊ฒ์ ์ ์ ํ์ง ์์ต๋๋ค.
์ด๋ด, ๋ ๋์ ํจ๊ป์์ด.
๋๋ ์ค์ด์ ํ์ฌ ์ํ(๊ธฐ๋ฅ, ์๋๋ฆฌ์ค, ๋จ๊ณ, ์ ์ฒด ์์ฑ ์ปฌ๋ ์
ํฌํจ)์ ๋ํ ๋ฌด์ ํ ์ก์ธ์ค๋ฅผ ์ํ์ ๊ฒ์
๋๋ค. ).
์ค์ดJS๊ฐ ์ด๋ฌํ ์ข
๋ฅ์ "๋ด๋ถ ๊ฐ์์ฑ"์์ ์๋์ ์ผ๋ก ๋ฉ์ด์ง๋ ๊ฒ์ ๋ณด๊ณ , ๋๋ ๊ฐ๊น์ด ์ฅ๋์ ํจ๊ณผ๊ฐ ์์ ์ ์๋ค๊ณ ์๊ฐํ๋ ์ข
๋ฅ์ ์๋ฃจ์
์ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ๊ฐ์ธ์ ์ผ๋ก, ๋๋ ์ฐ๋ฆฌ์ ๊ฐ์ ๋์ฅ์ด๊ฐ ์ด๋ฌํ ์ข
๋ฅ์ ์ก์ธ์ค๋ฅผ ์ ์งํ๊ธฐ ์ํด Cucumber์ ๋ด๋ถ์์ ๋ด๋ถ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํด์ผ ํ ๋๊ฐ ์ฌ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ด์ฐฎ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์์ญ ๋ช
์ด๊ณ ์ผ๋ฐ ์ฌ์ฉ์๋ ์์ฒ ๋ช
์ ๋ฌํฉ๋๋ค.
๊ฐ๋ฅํ๋ค๋ฉด ์๋๋ฆฌ์ค์ ์ด๋ฆ๋ ๋ท๋ฐ์นจํ๊ฒ ์ต๋๋ค. ์ค์ ๋ก ์ค๋ ์ท ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์์ผ๋ฉฐ ๋ด ์ค๋ ์ท์ ์ด๋ฆ์ ์ง์ ํ๋ ค๋ฉด ์๋๋ฆฌ์ค์ ์ด๋ฆ์ ์์์ผ ํฉ๋๋ค.
@gd46 ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
this.After({tags: "<strong i="7">@set_video</strong> and @youtube"}, function () {
setVideo('youtube');
})
this.After({tags: "<strong i="8">@set_video</strong> and @vimeo"}, function () {
setVideo('vimeo');
})
@set_video
ํ๋๊ทธ๋ฅผ ์ ์ธํ๊ณ ๋ ์ค๋ณต๋์ง ์์ต๋๋ค.
@pawelus
๊ทธ๋ฐ ๋ค์ ํํฌ์์ ์์ธํ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ๋ณด๋ ๋๋ค.
After
ํํฌ์์ ์ด ์์
์ ์ํํด์ผ ํฉ๋๊น? json ํฌ๋งทํฐ ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ์ฌ ํ
์คํธ๊ฐ ์๋ฃ๋ ํ ์ด ์์
์ ์ํํ ์ ์์ต๋๊น? ๋ ๋ง์ ์ฒ๋ฆฌ๊ฐ ํ์ํ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํจ์ ๋ฐ๋ผ ๊ณ์ํ๊ธฐ ์ํด ์ด๋ฒคํธ ํ๋กํ ์ฝ ํฌ๋งทํฐ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. 3.x ๋ณ๊ฒฝ ์ฌํญ์ ๋ถ์ฐ๋ฌผ์ ๊ตฌ๋ฌธ ๋ถ์ ๊ฒฐ๊ณผ๊ฐ ์ง์ ํ์ผ์์ ๋
๋ฆฝ ์คํํ ํ๋ก์ธ์ค๋ก ์ด๋ํ๋ค๋ ๊ฒ์
๋๋ค. ๋๋ ์ด๊ฒ์ด ์ฌ๋ฌผ์ ๋ ๋์ ๋ถ๋ฆฌ์ ์ด์์ ์ผ๋ก ์ฌ๋ฌผ์ด ์๋ ์ด๋ป๊ฒ ๋ง๋ค์ด ์ก๋์ง ์๊ฐํฉ๋๋ค.
@bnadim
attach
ํจ์๋ก ์คํฌ๋ฆฐ์ท์ ์ถ๊ฐํ์ฌ ์ด๋ฒคํธ potocol / json ํฌ๋งทํฐ์์ ์ถ๋ ฅํ๋๋ก ํ ๋ค์ ์ผ๋ถ ์ฌํ ์ฒ๋ฆฌ๋ฅผ ์ํํ์ฌ ์๋๋ฆฌ์ค ์ด๋ฆ์ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ธก๋ฉด์ด ์๋: ์๋๋ฆฌ์ค ์ด๋ฆ์ ๊ณ ์ ํ์ง ์์ ๋ฐ๋ฉด ์๋๋ฆฌ์ค uri ๋ฐ ํ ๋ฒํธ๋ ๊ณ ์ ํฉ๋๋ค.
@charlierudolph ๋ด ์๊ตฌ์ ๋ํ ๊ฒฌ๊ณ ํ ๋์ฒด ์๋ฃจ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ํ์ฌ ์คํ ์ค์ธ ์๋๋ฆฌ์ค๋ฅผ ๋ถ์ํ ํ์๊ฐ ์์ต๋๋ค. ์ฃผ์ด์ง ํจ์๊ฐ ํํฌ ๋ด์์ ์ฒ๋ฆฌํ ์ ์๋ ๋ค์ํ ์กฐํฉ์ ์ค๋ช ํ๋ ํํฌ์ ์ฌ๋ฌ ์กฐํฉ์ ์ ์ํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ํ์ฌ ์คํ ์ค์ธ ์๋๋ฆฌ์ค ํ๊ทธ๊ฐ ํจํด์ ๊ธฐ๋ฐ์ผ๋ก ๋ถํ ํ๊ณ ์ผ์น์ ์ผ๋ถ๋ฅผ ํจ์์ ๋ํ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ ์ ์ฌํ ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ฐ์ํด์ผ ํ๋ ๋ชจ๋ ๋จ๊ณ๋ ๋์ผํ๋ฉฐ ๋ณ๊ฒฝ๋๋ ์ ์ผํ ๊ฒ์ ๋งค๊ฐ๋ณ์์ ๋๋ค. ๋ฐ๋ผ์ ์ด๊ฒ์ ํํฌ์ ์ฌ๋ฌ ์ค์ ๋จ๊ณ๋ฅผ ์ค์ฌ ์ฌ๋ฌ ๊ฒฝ์ฐ์ ์๋ํ ์ ์์ต๋๋ค.
๊ทธ๋ฌํ ์:
tags: <strong i="9">@clear_w2OnlyUser</strong>, <strong i="10">@clear_w2OnlyArcotEnableUser</strong>
I split based on <strong i="11">@clear_</strong> and grab the second half as the parameter. tagName coming from the old scenario result of getTags, getName.
let profileToClear = tagName.split('<strong i="12">@clear_</strong>')[1];
browser.waitForAngularEnabled(false);
browser.get(url);
login();
navigate();
deleteProfile(profileToClear);
์ด์ ๋ํ ์๊ฐ์ ๋ง์ํด ์ฃผ์๊ฒ ์ต๋๊น? ๋๋ ๋น์ ์ ์๊ฐ ์ด๋ค ๊ฒฝ์ฐ์๋ ์ฝ๊ฒ ๋์ฒด๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ํด์ผ ํ๋ ๋ช ๊ฐ์ง ์ถ๊ฐ ๋จ๊ณ๊ฐ ์๋ ๋ค๋ฅธ ๊ณณ์์๋ ์ด๋ฌํ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ ์ฌ์ ์ผ๋ก ๋ณต์ ํ ์ ์์ต๋๋ค.
๋ด ์ฌ์ฉ ์ฌ๋ก๋ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง ์๊ณ ์๋ ํ๊ทธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ์๋๋ฆฌ์ค์ ๋ํด mockserver๋ฅผ ์ค์ ํ๋ ๊ฒ์ ๋๋ค. ํ๊ทธ๊ฐ ์ง์ ๋ ํน์ ์๋๋ฆฌ์ค์ ๋ํ ํํฌ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋งค์ฐ ์ง์ฝ์ ์ ๋๋ค. ์ง์ํ๋ ๊ฐ ์๋๋ฆฌ์ค์ ๋ํ ํํฌ๋ฅผ ์ถ๊ฐํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค...
๋ํ ์๋๋ฆฌ์ค ์ด๋ฆ์ ๊ธฐ๋กํ๊ธฐ ์ํด Before ๋ฐ After ํํฌ์์ ์๋๋ฆฌ์ค.name์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์ํ ๋ ํน์ ์๋๋ฆฌ์ค๊ฐ ์์๋๊ณ ๋๋๋ ์์ ์ ์ ์ ์์ต๋๋ค. ์ด ๋ณ๊ฒฝ์ผ๋ก ์ธํด ํด๋น ๊ธฐ๋ฅ์ด ์ค๋จ๋ฉ๋๋ค.
Cucumber-js๋ฅผ ์ฌ์ฉํ์ฌ Selenium์ ๊ตฌ๋ํ๊ณ ์์ต๋๋ค. ๋ก์ปฌ ๋ฐ Browserstack ๋ชจ๋
๋๋ ๋ง์ ํ์์ ์ธ ๊ฒ๋ค์ ์ํด ํํฌ์์ ํ ์คํธ ์ํ(๊ธฐ๋ฅ, ์๋๋ฆฌ์ค, ํ๊ทธ, ๊ฒฐ๊ณผ ๋ฑ)๋ฅผ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
์ด ๋ชจ๋ ๊ฒ์ ๋์ ์ธ์คํด์ค๊ฐ ์ ์ฒด ์คํ ์๊ฐ์ ์ค์ผ ์ ์๋๋ก ์ฑ์ผ๋ก ๋ํ๋์์ต๋๋ค.
์ ์ด๊ฒ๋ค์ด ๋จ์ด์ก์ต๋๊น?
๊ทธ๋ค์ ๊ฒฐ์ฝ ๋์ ์ค์ง ์์ ๊ฒ์
๋๊น?
@gd46
์คํ ์ค์ธ ์๋๋ฆฌ์ค์ ํด๋น ์ ํ์ ํ๋กํ์ด ํฌํจ๋ฉ๋๊น? ์ด๋ค ์ ํ์ ํ๋กํ์ด ์ธ์๊ณผ ์ํธ ์์ฉํ๋์ง ์๋๋ฆฌ์ค๋ฅผ ์ ์ฅํ๊ณ ์ ์ฅ๋ ํ๋กํ์ ์ ๊ฑฐํ๋ผ๋ ๋จ์ผ ๋ช ํํ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?
@justusromijn
๋ชจ์ ์๋ฒ์ ๊ฒฝ์ฐ ์ค์ ์ ์ ์ํ๋ ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ทธ ๊ธฐ๋ฐ์์ ์ค์ ์ ์ด๋ํ ์ ์์ต๋๊น? ๊ทธ๋ฌ๋ฉด ์ฝ๊ฒ ๋งค๊ฐ๋ณ์ํํ ์ ์์ต๋๋ค.
@Jordyderuijter
์๋๋ฆฌ์ค ๋ผ์ธ๊ณผ URI(์ค์ ๋ก ๊ณ ์ ํ๊ณ ์๋๋ฆฌ์ค ์ด๋ฆ์ ๊ฒ์ํ ํ์๊ฐ ์์)๋ฅผ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
@leggebroten
์๋๋ฆฌ์ค๋ณ URL ๋ณ๊ฒฝ
๋์ ์ด ๋จ๊ณ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๊ณ ์ ํ ํ๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ๋ธ๋ผ์ฐ์ ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ผ๋ก ํ ์คํธ ๊ฑด๋๋ฐ๊ธฐ
์ด๋ป๊ฒ ๋์ ์ผ๋ก ํ ์คํธ๋ฅผ ๊ฑด๋๋ฐ๊ณ ์์์ต๋๊น? #912์ ๋ํ ์ง์ ์ถ๊ฐ
์๋๋ฆฌ์ค๋ณ URL์ ์ฌ์ฉํ์ฌ Browserstack์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๊ธฐ๋กํ์ญ์์ค.
์ด๋ฆ ๋์ line๊ณผ uri๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด line๊ณผ uri๋ ๊ณ ์ ํ์ง๋ง ์ด๋ฆ์ ๊ณ ์ ํ์ง ์์ต๋๋ค. ๋ํ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ์ํด json ํฌ๋งทํฐ ๋๋ ์ด๋ฒคํธ ํ๋กํ ์ฝ ํฌ๋งทํฐ ํฌ๋งทํฐ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ๊ณ ์ถ๊ฐํด์ผ ํ ์ฌํญ์ด ์์ผ๋ฉด ์ฒจ๋ถ ํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ธฐ๋ฅ ๋ฐ ์๋๋ฆฌ์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ Browserstack์์ ์ธ์ ์ด๋ฆ ์์ฑ
๋ผ์ธ + URI๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ๊ทธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํ์ฌ ์๋๋ฆฌ์ค๋ณ ๋ธ๋ผ์ฐ์ ํด์๋๋ฅผ ์๋ณํ๊ณ ์ค์ ํฉ๋๋ค.
์ด๋ฅผ ์ํด ๋จ๊ณ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ชจ๋ ์์์ ํํฌ์ ๋ค์ ํ๊ทธ๋ ์ด๋ฆ์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ํ์ ํ๋ ์ฌ์ฉ ์ฌ๋ก๋ ์์ง ์์ต๋๋ค. ํ๊ทธ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ํน์ ์์ ์ ๋ ์ฝ๊ฒ ์ํํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ ์๋ฏธ๊ฐ ์๋ ์์ ์ ์ํํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
@charlierudolph ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค. ๋ชจ์ ์๋ฒ์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ผ๋ถ ๋๋ฃ์ ๋น ๋ฅธ ๋ํ๋ฅผ ๋๋ด๊ณ ๊ณต์ "๋ฐฐ๊ฒฝ"์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฃจ์ ์ ๊ณ ๋ คํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๋ชฉ๋ก ์ค ํ๋๋ฅผ ๋์ ์ ์์ต๋๋ค.
@charlierudolph ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค.
๋จ๊ณ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ ฅ์ ๊ตฌ๋ฌธ ๋ถ์ํ๋ผ๋ ์ ์์ด ์๋ํ ์ ์์ง๋ง ์ฝ๋ฐฑ์ด ์ํ ํ ์คํธ์ ์ก์ธ์คํ ์ ์๋ ์ด์ ๋ฒ์ ๋ณด๋ค ํจ์ฌ ์ด๋ฑํฉ๋๋ค.
0) ๊ด์ฐฐ์ ํจํด๊ณผ ์ผ์นํ์ง ์์ต๋๋ค. ์ฝ๋ฐฑ์ ์ง์ํ๋ ๋์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด์ผ ํฉ๋๋ค.
1) ๊ทน๋์ ์ทจ์ฝ์ฑ์ ์ ๋ฐํฉ๋๋ค. ํ ์คํธ๋ ์ ๋ขฐํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ๋ขฐํ ์ ์์ต๋๋ค. ์ค ๋ฒํธ์ ํ์ผ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋จ์ํ ์บ๋ฆฌ์ง ๋ฆฌํด์ ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ๋ฉด ํ ์คํธ๊ฐ ์ค๋จ๋ฉ๋๋ค.
2) ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ DRY๋ฅผ ์๋ฐํฉ๋๋ค. ํ๊ทธ๋ก ํ์๋ A/B ํ ์คํธ๋ฅผ ์์ฃผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ญ์์ค. ํฌํจ๋ ๋จ๊ณ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋ช ๋ น์ค ํ์ฅ์ ์ถ๊ฐํ์ง ์๋ ํ ํ ์คํธ์๋ ํ๊ทธ์ ์ง์ํ๋ ์ํ ๋ณ๊ฒฝ ๋จ๊ณ๊ฐ ๋ชจ๋ ํ์ํฉ๋๋ค.
3) ๊ฐ๋ฐ์๊ฐ ์ถ๊ฐ ์์ ์ ์ํํด์ผ ํฉ๋๋ค. ์ํ๋ฅผ ์ฐพ๊ธฐ ์ํ ์ถ๋ ฅ ๊ตฌ๋ฌธ ๋ถ์์ ๋ถํ์ํ๊ณ ์ง๋ฃจํ๋ฉฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฝ๊ณ ํ ์คํธ๋ฅผ ์ถ๋ ฅ ํ์(๋น์ฝํ ์ปคํ๋ง)์ ๋ฐ์ธ๋ฉํ๊ณ DRY๋ฅผ ์๋ฐํฉ๋๋ค.
4) ์ค์ด์ ์ผ์นํ์ง ์์ต๋๋ค. ๊ธฐ๋ฅ์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด ๋จ๊ณ(ํ ์คํธ์ ์๋ฏธ๋ก ์ ๋ถ๋ถ)๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๊ฒฉ๋ฆฌ ํ ์คํธ ์์ฑ์์ ์๋์ ์๋ฐฐ๋ฉ๋๋ค. ๋์์ด ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ํ ์คํธ๋ ๋ณ๊ฒฝ๋์ง ์์์ผ ํฉ๋๋ค.
5) ์ ์ธ์ ์ด์ง ์์ต๋๋ค. ํ๊ทธ๋ ํ ์คํธ์ ๋ํ ๋ฉํ๋ฐ์ดํฐ์ด๋ฉฐ ํ ์คํธ๊ฐ ์คํ๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฏธ์ ์ผ๋ก ์ผ๊ด๋ฉ๋๋ค. ๋ฐ๋ฉด ๋จ๊ณ๋ ํ ์คํธ์ ํฌํจ๋ฉ๋๋ค. ์ฌ์ฉํ๋ ๋จ๊ณ๊ฐ ์๋๋ผ ํ๊ทธ๋ก ํ ์คํธ ์ธํธ๋ฅผ ์๋ณํฉ๋๋ค.
์, ๊ทธ๋ฆฌ๊ณ ์ ๋ ์ค์ ๋ก "๊ฑด๋๋ฐ๊ธฐ" ํ ์คํธ๊ฐ ์๋์์ต๋๋ค. ํ ์คํธ ์คํ์ ํผํ๊ธฐ ์ํด callback( null, 'pending' )์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค. ์๋ก์ด '๊ฑด๋๋ฐ๊ธฐ' ๊ธฐ๋ฅ์ ํ์ํ ์๋ฃจ์ ์ ๋๋ค.
@charlierudolph , ๋๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ
์ ์๊ฐํ๊ณ ์์์ต๋๋ค ...
World ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ ๋ ํ
์คํธ์ ์ฌ์ฉ๋ Scenario ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
World๋ ๋ชจ๋ ์ฝ๋ฐฑ์ ๋ํด "this"๋ก ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก V2์ ์์ ํ ํจ๋ฆฌํฐ๋ฅผ ๋ฌ์ฑํฉ๋๋ค(AfterAll ์ฝ๋ฐฑ์ ๊ฒฐ๊ณผ๊ฐ ์ ๊ณต๋ ๊ฒฝ์ฐ).
@leggebroten
Using Steps to alter State violates DRY
์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ํ๊ทธ๋ ๊ธฐ๋ฅ ์ ํ์ ์ฌ์ฉ๋๋ฉฐ ๋จ๊ณ๋ ์ค์ /์ก์
/๊ธฐ๋์ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๊ฒ๋ค์ ๋ค๋ฅธ ๋ชฉ์ ์
๋๋ค. ํ๊ทธ๊ฐ ์ง์ ๋ ํํฌ๊ฐ ์๋ ์ค์ ์ ์ํด ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋ํ ์ง์์ ์ต์ํ์ด์ง๋ง ๋ณต์ก์ฑ์ ์ฒ๋ฆฌํ๋๋ก ๊ตฌ์ถ๋์ง ์์์ต๋๋ค.Adding Steps (a semantic part of the test) to alter the Feature's state is counter to intent of Cucumber of isolating test writer
๋๋ ์ดํด๊ฐ ์ ๋๋ค. ๋จ๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์์
์ ์ํํ๊ณ ์ํ๋ฅผ ์ค์ ํ ์ ์๋ค๋ฉด ํ
์คํธ๋ฅผ ์ด๋ป๊ฒ ์คํํ๊ณ ์์ต๋๊น?Tags are metadata ABOUT the test, it is semantically consistent to use them to alter the state in which the test will run
. ์ผ๊ด์ฑ์ด ์๋ค๋ ์ ์ ๋์ํ์ง ์์ต๋๋ค. ๋์๊ฒ ํ๊ทธ๋ ํ
์คํธ๋ฅผ ์๋ณํ๊ธฐ ์ํ ๊ฒ์
๋๋ค. ์ต์ํ์ ์ํ ๋ณ๊ฒฝ์ ์ง์ํ์ง๋ง ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๋ณต์กํ ์ํ ๋ณ๊ฒฝ์ ์ง์ํ์ง ์์ต๋๋ค.์์คํ ์ ๋ ์ด์ ์๋๋ฆฌ์ค ๊ฐ์ฒด๊ฐ ์์ต๋๋ค. v2์์ ํจ๋ฆฌํฐ๊ฐ ๋ชฉํ๊ฐ ๋์ด์๋ ์ ๋๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด ๋ํ๊ฐ ๋์๊ณ ๋ค๋ฅธ ์๋ฃจ์ ์ ์ฐพ๊ณ ์์ด์ ๊ธฐ์ฉ๋๋ค. ํ์ง๋ง ์ฌ์ฉ์๊ฐ ์ค์ด์ ์ธํฐํ์ด์ค๊ฐ ์๋๋ผ ๊ตฌํ์ ํจ์ฌ ๋ ์์กดํ๊ฒ ๋ง๋ค์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด์ ์ผ๋ก ๋์๊ฐ๊ณ ์ถ์ง ์์ต๋๋ค.
@charlierudolph ,
์๊ฐ์ ๋ด์ด ์ด ๋ฌธ์ ๋ฅผ ๋ ผ์ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. Cucumber-js๋ฅผ ์ ๊ณตํ๊ธฐ ์ํด ์ํํ ์์ ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋๋ก V3๋ก ์ ๊ทธ๋ ์ด๋ํ ์ ์์ต๋๋ค.
๋๋ ์ ํฌ์ ์ผ ์๊ฐ์ด ์๋ค. ๊ฑฑ์ ์ด ๋๊ธฐ๋ ํ๊ณ ์ ๋ต๋ณ์ ๋์ฌ ์๋ ์์ต๋๋ค.
์ด์ ๋ฒ์ ์ ๋ฌธ์ํ๋ ์ด๋ฒคํธ ์ธํฐํ์ด์ค๋ง์ ์ฌ์ฉํ์ฌ ์ด์ ์ฒด์ /๋ฒ์ , ๋ธ๋ผ์ฐ์ /๋ฒ์ , ๋ฐ์คํฌํ/ ๋ชจ๋ฐ์ผ ๋ฐ Optimizely A/B ํ ์คํธ.
๋จ๊ณ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋๋ฌด ๋ฆ์์ด ์ฅ์น ์ ํ, OS/๋ฒ์ ๋ฐ ๋ธ๋ผ์ฐ์ /๋ฒ์ ์ ํ ์คํธ๊ฐ ์์๋๊ธฐ ์ ์ ๊ฒฐ์ ๋์ด์ผ ํ๋ฉฐ ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ์๋๋ฆฌ์ค์ "OS ์ค์ " ๋จ๊ณ์ "๋ธ๋ผ์ฐ์ ์ค์ " ๋จ๊ณ๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ Cucumber์ ๋ชฉํ์ ์ง์ ์ ์ผ๋ก ์ถฉ๋ํฉ๋๋ค.
๋๋ ์์์ ์ธ๊ธํ๋ฏ์ด ์๋๋ฆฌ์ค ์ ๋ณด(๊ธฐ๋ฅ URI, ์ด๋ฆ, ํ ๋ฐ ํ๊ทธ)๋ฅผ World ์์ฑ์์ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ด๊ฒ์ ์๋ฏธ์ ์ผ๋ก World ๊ฐ์ฒด์ ์๋์ ์ผ์นํ๋ฉฐ ์บก์ํ ๋ฐ ํ์ฅ์ด ๋ ๊ฐ๋จํฉ๋๋ค. ์ด๊ฒ์ ๋๋ถ๋ถ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ ๋ฟ๋ง ์๋๋ผ ํธ๋ค๋ฌ์ "this"๊ฐ World ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ด์ฐฐ์ ํจํด๊ณผ ์ผ์นํ๋ ์ํ์ ๋๋ค.
๋๋ Observer Pattern์ด Cucumber์ ๋์์ธ ๋ชฉํ๋ผ๊ณ ๋งํ์ง ์์์ต๋๋ค. Hooks์ Events๋ Observer์ด๊ณ , ๋ฐ๋ผ์ ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ์ํ๋ฅผ ์ ๊ณต๋ฐ์์ผ ํฉ๋๋ค. ์ด ํจํด์ ์ฌ์ฉํ๋ฉด ํธ์ถ์์ ๊ตฌํ๊ณผ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
๋๋ ์ค์ ์ด๋ฆ์ ์์กดํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ๋ค์ ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ Browserstack์์ ์ฐ๊ด๋ ์ฌ์ฉ์ ์๋ฏธ ์ธ์ ์ด๋ฆ์ ๊ตฌ์ถํ๋ ์๋จ์ ๋๋ค.
Before ๋์ ํ๊ทธ ์ธํธ์ ์ก์ธ์คํ ์ ์์ด ํ ์คํธ๋ฅผ ์์ (๋จ๊ณ ์ถ๊ฐ)ํ์ง ์๊ณ ๋ ์ํ ๋ณ๊ฒฝ(์: Optimizely URL ๋งค๊ฐ๋ณ์ ์ค์ )์ ์ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ์ฑ์ ๋น๋ํ ์ ์์์ต๋๋ค. ์ด๊ฒ์ ๋ด๊ฐ ์คํํ๊ณ ์ถ์ ํ ์คํธ(ํ๊ทธ)์ ์ค์ ์ฌ์ด์ 1-1 ์๊ด๊ด๊ณ๊ฐ ์์์ ์๋ฏธํ์ต๋๋ค. ๋ง๋ฅธ.
๊ฐ๋ฐ์๊ฐ ๊ตฌํ์ ์์กดํ๊ณ ์๋ค๋ ์ฐ๋ ค๋ฅผ ํ๋ช ํ์ง๋ง ํ์ํ ๊ด์ฐฐ์ ์ํ๋ฅผ ์ ๊ฑฐํ๋ ์๋ฃจ์ ์ ๊ฐ๋ฐ์๋ฅผ ๋ค๋ฅธ ๊ตฌํ(ํ์ผ ํ์)์ ์์กดํ๊ฒ ๋ง๋๋ ๊ฒ์ ๋๊น? ์ฌ์ฉ์๊ฐ State ์์ฑ์ ์ก์ธ์คํ๋ ๊ฒ๋ณด๋ค ๋ ์ง๋ฃจํ๊ณ ๋๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ด ์์ ๊ตฌ๋ฌธ ๋ถ์์ ์ํํ๋๋ก ํ๋ ๊ฒ์ด ์ด๋ป๊ฒ ๋ ๋์ ์ ์์ต๋๊น?
๋ถ๋ช ํ ๋จ๊ณ๋ ํ ์คํธ ์ํ๋ฅผ ์ค์ ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ Cucumber์ ๋์์ธ ๋ชฉํ ์ค ํ๋๋ ๋จ๊ณ๋ฅผ ์์ฑํ๋ ์ฌ๋์ด ๊ธฐ๋ณธ ๊ตฌํ์์ ๊ฒฉ๋ฆฌ๋์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. EG๋ ๊ธฐ๋ณธ ์ธ๋ถ ์ฌํญ์ ์ฝ๋งค์ด์ง ์๊ณ ์๋ฏธ๋ก ์ ๋์์ ํ ์คํธํฉ๋๋ค. ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํ๋ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ๊ณ ์ฅ์น/๋ธ๋ผ์ฐ์ /OS๋ฅผ ์ ์ํ๋ ๊ฒ์ ์ด ๋ชฉํ์ ์ด๊ธ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋น์ ์ ์ํด ํ๊ทธ๋ ํ ์คํธ ์๋ณ์ ๊ดํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ Cucumber Wiki ๋ ํ๊ทธ๋ฅผ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
Before ์ฝ๋ฐฑ ๋์ ํ๊ทธ์ ์ก์ธ์คํ๋ฉด ํ ์คํธ๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ธ๋ผ์ฐ์ ๊ตฌ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ ์ ํ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ธ์ ์ ๋๋ค. ๋จ๊ณ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๊ฐ ๋๋ ํ๋ฉ๋๋ค.
์ด์ ๋ฒ์ ์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ํธ์ถ ๋ฐ ๋งค๊ฐ๋ณ์๋ WERE ์ธํฐํ์ด์ค์ ๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ฅผ ๊ตฌํ๊ณผ ๊ฒฐํฉํ์ฌ ๋์ถ๋๋ ๊ฒฝ์ฐ ์ฝ๊ธฐ ์ ์ฉ "์๋๋ฆฌ์ค" ํ๋ก์๋ฅผ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ์ ๋ฌํฉ๋๋ค.
@charlierudolph ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค
์๋๋ฆฌ์ค ์ด๋ฆ๋ ๋จ์ผ ์บ๋ฆญํฐ ๋ณ๊ฒฝ์ผ๋ก ๋ณ๊ฒฝ๋๊ธฐ ๋๋ฌธ์ ์ทจ์ฝํฉ๋๋ค. ๊ด๋ จ ์๋ ์์ ์ ์ํํ ๋ ํ์ผ/์ค ๋ฒํธ ๋๋๊ธฐ์ ๋์ํฉ๋๋ค. ํ ์คํธ๋ฅผ ์คํํ์ง ์๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ ๋ ์ฌ์ฉํ์๊ณ ์ ์ํ ๊ฒ์ด๋ฏ๋ก ์ทจ์ฝํ ๋ถ๋ถ์ ๊ทธ๋ค์ง ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
์ฌ์ค, ์๋๋ฆฌ์ค ์ด๋ฆ๋ ์ทจ์ฝํ์ง๋ง ํ์ผ๊ณผ ์ค๋ก ์ฐธ์กฐํ๋ ๊ฒ๋ณด๋ค ์๋๋ฆฌ์ค๋ฅผ ์ฐธ์กฐํ๋ ๋ฐ ํจ์ฌ ๋ ์ทจ์ฝํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ผ ๋ก๊น ์์ ์๋๋ฆฌ์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์คํ ์คํจ๋ฅผ ๋ถ์ํ๊ณ ๋ฌด์์ด ์๋ชป๋์๋์ง ํ์ธํฉ๋๋ค. ๋ก๊น ์ ํ์ผ๊ณผ ์ค ๋ฒํธ๋ง ํ์๋๋ฉด ์๋๋ฆฌ์ค๋ฅผ ์ญ์ถ์ ํ๊ธฐ์๋ ๋๋ฌด ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ฒ๋ค๊ฐ ๋๊ตฐ๊ฐ๊ฐ ๊ธฐ๋ฅ ํ์ผ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์๋๋ฆฌ์ค๋ฅผ ๊ทธ ๋์ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์ฎ๊ธฐ๋ฉด ์ํฉ์ด ํจ์ฌ ๋ ๋ณต์กํด์ง๋๋ค.
๋ก๊น ์ ํ์ผ๊ณผ ์ค ๋ฒํธ๋ง ํ์๋๋ฉด ์๋๋ฆฌ์ค๋ฅผ ์ญ์ถ์ ํ๊ธฐ์๋ ๋๋ฌด ๋ง์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ป๊ฒ ๋ ์ค๋ฒ ํค๋๊ฐ ์์ต๋๊น? ํ์ผ๊ณผ ์ค ๋ฒํธ๋ฅผ ์๊ณ ๋ฐ๋ก ๊ฐ ์ ์์ต๋๋ค. ์๋๋ฆฌ์ค ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์์ด์ ๊ฒ์ํ์ฌ ํด๋น ํ์ผ ๋ฐ ํ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
์ด๋ป๊ฒ ๋ ์ค๋ฒ ํค๋๊ฐ ์์ต๋๊น? ํ์ผ๊ณผ ์ค ๋ฒํธ๋ฅผ ์๊ณ ๋ฐ๋ก ๊ฐ ์ ์์ต๋๋ค. ์๋๋ฆฌ์ค ์ด๋ฆ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๋ฌธ์์ด์ ๊ฒ์ํ์ฌ ํด๋น ํ์ผ ๋ฐ ํ์ผ๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
๋ด๊ฐ ๋งํ๋ฏ์ด, ๊ทธ ์ฌ์ด์ ๊ธฐ๋ฅ ํ์ผ์ด ๋ณ๊ฒฝ๋๊ณ ์๋๋ฆฌ์ค๊ฐ ๋ ์ด์ ๊ทธ ์ค์ ์์นํ์ง ์๋๋ค๋ฉด. ํนํ ์ด์ ํ ์คํธ ์คํ(์: 1์ฃผ ์ )์ ๋ก๊ทธ๋ฅผ ๋ณผ ๋. ์ด ๊ฒฝ์ฐ git์ ํตํด ์ฃผ์ด์ง ์๊ฐ์ ํด๋น ๋ผ์ธ์ ์ด๋ค ์๋๋ฆฌ์ค๊ฐ ์์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.
FWIW, ์ค์ด-๋ฃจ๋น์๋ "์ฌ์ด ๊ฒ์ ์ฌ์์ผ ํ๊ณ , ์ด๋ ค์ด ๊ฒ์ ๊ฐ๋ฅํด์ผ ํ๋ค"๋ ์์น์ ์ถฉ์กฑํ๋ ๋ ๊ฐ์ง ํ์ฅ์ ์ด ์์ผ๋ฉฐ ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก์ ๋์์ด ๋ ์ ์๋ ์์ด๋์ด์ผ ์ ์์ต๋๋ค.
์ฐ์ RunningTestCase
์ ์ธ์คํด์ค๋ฅผ ๊ฐ ํํฌ์ ์ ๋ฌํฉ๋๋ค. ์ด๊ฒ์ Gherkin ์์ค(์๋๋ฆฌ์ค/๊ฐ์/ํ๊ทธ ๋ฑ)์ ๋ํ ๋ชจ๋ ์ ๋ณด์ ์๋๋ฆฌ์ค์ ํ์ฌ ๊ฒฐ๊ณผ ์ํ๋ฅผ ํฌํจํ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ ๊ฐ์ฒด์
๋๋ค. ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ง ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ํ๋ ์ด ์ํ์ ๋ํ ํฌ๋ช
์ฑ์ ์ ๊ณตํฉ๋๋ค.
๋์งธ, ํํฐ ๊ฐ
HTH
ํํฐ์ ๋ํ ๋งํฌ ๋ค์ ์๋ ๋ฌธ์๊ฐ ๋์ฐํ๋ค๋ ๊ฒ์ ๋ฐฉ๊ธ ๊นจ๋ฌ์์ต๋๋ค! ์ฃ์กํฉ๋๋ค. ์ง๊ธ ๊ณ ์น ์๊ฐ์ ์์ง๋ง ์ฌ๊ธฐ์ ๋ช ๊ฐ์ง ์๊ฐ ๋ ์์ต๋๋ค. http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Filters
์๋ ํ์ธ์ @charlierudolph ,
์ด ๋ํ์ ๋ํ ํ์ ์กฐ์น๋ฅผ ์ทจํ ์ง ์ผ๋ง ๋์ง ์์ ์ฃ์กํฉ๋๋ค. ๊ทํ์ ์ง์ ์ ๋ํด ์์ธํ ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
"์คํ ์ค์ธ ์๋๋ฆฌ์ค์ ํด๋น ์ ํ์ ํ๋กํ์ด ํฌํจ๋ฉ๋๊น? ์ธ๊ณ์ ์ํธ ์์ฉํ๋ ํ๋กํ ์ ํ์ ์๋๋ฆฌ์ค์ ์ ์ฅํ ๋ค์ ์ ์ฅ๋ ํ๋กํ์ ์ ๊ฑฐํ๋ผ๋ ๋จ์ผ ํ๊ทธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๊น?"
ํ๋ก์ฐํ๊ณ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ํ ์คํธ ๊ฒฐ๊ณผ ์์ด ๋์ผํ ์๋ฃจ์ ์ ์ป์ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์์ ์ ์์์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ํ์์ ๋ด๊ฐ ์ง๊ธ๊น์ง ๋ณธ ๊ฒ์ ๋ชจ๋ ๋์์ด ํ์ ์ด์์ผ๋ก ๋ณต์กํด ๋ณด์ธ๋ค๋ ๊ฒ์ ๋๋ค. ์ด์ ํ ์คํธ ๊ฒฐ๊ณผ์๋ ์คํํ๋ ค๋ ์๋๋ฆฌ์ค์ ๋ํ ๋ง์ ์ค๋ช ๋ฐ์ดํฐ๊ฐ ์์๊ณ ์ด๊ฒ์ด "๋งค๊ฐ๋ณ์ํ๋" ํํฌ๋ฅผ ๊ฐ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๋ด๊ฐ ๋ณด๊ณ ์๋ํ ๊ฐ๋๊ธฐ๋ ํ์ฌ ์๋๋ฆฌ์ค ์ค ๋ฒํธ์์ ๊ธฐ๋ฅ ์คํ์ ์ง์ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ์๋ก์ด testCase ๊ฒฐ๊ณผ๋ ์ํ ์ธ์๋ ๊ทธ๋ค์ง ์ ์ฉํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
PickleFilter์ ํจ๊ป getTestCasesFromFileSystem์ ์ฌ์ฉํ ๋ ๋ฐํ๋ ๊ฒฐ๊ณผ์ testCase๊ฐ ์ผ์นํ๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. ๋๋ ์ด๊ฒ์ ์ค๋๋ก ๊ฐ๋๊ธฐ์ ์ ๋ฌํ ํ๊ทธ๋ก ์๋๋ฆฌ์ค ํํฐ๋ง์ ์ง์ํ๋ ๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ๋ณ๋ ฌ ์์ ์ ์ํํ๋ ๋ฐ ์ฌ์ฉํ์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ์์ ๋ฐํ๋ ์ ๋ณด๋ ํจ์ฌ ๋ ์ ์ฉํ๋ฉฐ testCase ๊ฒฐ๊ณผ์ ์์ผ๋ฉด ๋งค์ฐ ์ ์ฉํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
PickFilter์ ๊ฒฐ๊ณผ ์:
{ pickle:
{ tags: [Object],
name: 'Github test with page object',
language: 'en',
locations: [Object],
steps: [Object] },
uri: 'test/features/examples/github-example.feature' }
์ ํํ ์ผ์นํด์ผ ํ๋ค๊ณ ๋งํ์ง๋ ์์ง๋ง ์ด ๊ฒฐ๊ณผ์์ ๋์ ์ฌ๊ธฐ ๋ค๋ฅธ ์ฌ๋๋ค์ด ํํ์ ๋ณผ ์ ์์์ ๋ง์ด ๋ด ๋๋ค.
๋ด ์์์ ํฅ๋ฏธ๋กญ๋ค๋ฉด ์ฌ๊ธฐ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. https://github.com/gd46/dibellag-automation-framework/blob/master/configuration.js#L91
@charlierudolph testCase ๊ฐ ์ค์ ๋๋ ๊ณณ์ธ๊ฐ์?
๋ด๊ฐ ๋งํ ์์๋ ๊ฒ์ testCase๋ฅผ ๋ฐ๋ผ ํผํด์ ๋ํ ์ฐธ์กฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํผํด ๊ฒฐ๊ณผ์์ testCase ๊ฒฐ๊ณผ๋ก ๋ช ๋นํธ๋ฅผ ๋ ๋ฐํํ์ง ์๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
@gd46 ์ข์ต๋๋ค. sourceLocation์ ๋์ฒดํ๋ ํํฌ์ ์ ๋ฌ๋๋ ๊ฐ์ฒด์ pickle
๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์ด ๊ธฐ๋ฅ์์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค. https://github.com/cucumber/cucumber-js/blob/master/src/runtime/test_case_runner.js#L153
์๋ ํ์ธ์ @charlierudolph , ๋ฐฉ๊ธ ๊ทํ์ ์๊ฒฌ์ ๋ณด์์ต๋๋ค. ๊ทธ๊ฒ์ ์ข์ ๊ฒ์ ๋๋ค! ๋๋ ์ด๊ฒ์ ๊ณง ์ดํด๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ด๋ค. ๊ธฐ๊บผ์ด ๊ธฐ์ฌํ๊ฒ ์ต๋๋ค.
@charlierudolph ๋ณ๊ฒฝ ์ฌํญ์ ๋ช ํํ ํ๊ณ ์ถ์์ต๋๋ค. sourceLocation๊ณผ ๊ฐ์ด pickle์ ์ค ๋ฒํธ๊ฐ ์๋ uri๊ฐ ์ง์ ํฌํจ๋์ด ์๋ค๋ ์ฐจ์ด์ ์ ๋ํด ๊ด์ฐฎ์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ค ๋ฒํธ๋ก uri๋ฅผ ์ฌ์ฉํ๋ ค๋ ์ฌ๋์ ํผํด ๊ฐ์ฒด์์ ๋ฐํ๋ ์ค ๋ฒํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ๋๋ ์ด๊ฒ์ ๋ฌธ์ ๊ฐ ์๋ค๊ณ ํ์ธํ๊ณ ์ถ์์ต๋๋ค.
์์ค ์์น ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๋ ๋์ ๊ทธ๋๋ก ๋๊ณ ํผํด ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์ข์, ๊ทธ๊ฒ์ ๋์๊ฒ๋ ํจ๊ณผ์ ์ ๋๋ค. ๊ทธ๋์ ์ค์ด์ ๊ธฐ์ฌํ๋ ๊ฒ์ด ์ฒ์์ด๊ณ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.
์ ๋ฐ์ดํธํด์ผ ํ๋ ํ์ ์ง์ ํ๋ฏ์ด sourceLocation ์์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค.
pickle: this.testCase.pickle
๊ทธ๋ฐ ๋ค์ ํํฌ์์ ์๋นํ๋ ค๋ ์ฌ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ก์ธ์คํ ์ ์์ต๋๋ค.
testCase.pickle.tags
testCase.pickle.name
etc.
์ ๋ฐ์ดํธ๋ฅผ ํ์ง๋ง ๋ชจ๋ ๊ด๋ จ ํ ์คํธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ 100% ํ์ ํ ์ ์์ต๋๋ค. ์๋ด๋ฅผ ์ข ํด ์ฃผ์๊ฒ ์ต๋๊น?
ํฌํฌ๋ฅผ ๋ก์ปฌ ํ๋ก์ ํธ ์ค ํ๋์ ๋ํ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ์ฐ๊ฒฐํ์ฌ ๋ณ๊ฒฝ ์ฌํญ์ ํ ์คํธํ ์ ์์์ต๋๋ค. ์ ์ฒด testCase ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"sourceLocation": {
"uri": "test\/features\/examples\/example.feature",
"line": 4
},
"pickle": {
"tags": [
{
"name": "@example",
"location": {
"line": 3,
"column": 3
}
}
],
"name": "Custom Transform should take belly and capitalize it",
"language": "en",
"locations": [
{
"line": 4,
"column": 3
}
],
"steps": [
{
"text": "I have cucumbers in my belly",
"arguments": [
],
"locations": [
{
"line": 5,
"column": 10
}
]
}
]
},
"result": {
"duration": 7,
"status": "passed"
}
}
๋ ๋ง์ ํ ์คํธ๋ฅผ ์ํํ ํ test_case_runner์์ ์ก์ธ์คํ ์ ์๋ ์์ ์ pickle์ uri๊ฐ ํฌํจ๋์ด ์์ง ์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. ๋ฐ๋ผ์ ์์ค ์์น๋ฅผ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ์ด ์ข๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ PickleFilter๊ฐ ํผํด์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
{
"pickle": {
"tags": [
{
"name": "@example",
"location": {
"line": 3,
"column": 3
}
}
],
"name": "Custom Transform should take belly and capitalize it",
"language": "en",
"locations": [
{
"line": 4,
"column": 3
}
],
"steps": [
{
"text": "I have cucumbers in my belly",
"arguments": [
],
"locations": [
{
"line": 5,
"column": 10
}
]
}
]
},
"uri": "test\/features\/examples\/example.feature"
}
๋ฐ๋ผ์ ๋ชจ๋ ๊ฒ์ uri๊ฐ ํฌํจ๋์ง ์์ ๋์ผํ ๋นผ๊ธฐ ํผํด์ด ๋ ๊ฒ์ ๋๋ค.
์ง๊ธ๊น์ง์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์กฐํ๊ธฐ ์ํด PR์ ์ด์์ต๋๋ค. ์ฌ์ ํ ํ ์คํธ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
ํ ์คํธ ์ ๋ฐ์ดํธ ์์ . ๋ด ๋ก์ปฌ Java ๋ฒ์ ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด ์ด ์ค์ ์ ํ๊ณ ์ผ๋ถ ๊ธฐ๋ฅ ํ ์คํธ๋ฅผ ์คํํ ์ ์์๋ ์ด์ ๋ฅผ ๊นจ๋ฌ์์ต๋๋ค.
์ด ์ค๋ ๋๋ ๋ซํ ํ ์ต๊ทผ ํ๋์ด ์์๊ธฐ ๋๋ฌธ์ ์๋์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ด๋ จ ๋ฒ๊ทธ์ ๋ํ ์ ๋ฌธ์ ๋ฅผ ์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
FWIW, ์ค์ด-๋ฃจ๋น์๋ "์ฌ์ด ๊ฒ์ ์ฌ์์ผ ํ๊ณ , ์ด๋ ค์ด ๊ฒ์ ๊ฐ๋ฅํด์ผ ํ๋ค"๋ ์์น์ ์ถฉ์กฑํ๋ ๋ ๊ฐ์ง ํ์ฅ์ ์ด ์์ผ๋ฉฐ ์ด๋ฌํ ์ฌ์ฉ ์ฌ๋ก์ ๋์์ด ๋ ์ ์๋ ์์ด๋์ด์ผ ์ ์์ต๋๋ค.
์ฐ์
RunningTestCase
์ ์ธ์คํด์ค๋ฅผ ๊ฐ ํํฌ์ ์ ๋ฌํฉ๋๋ค. ์ด๊ฒ์ Gherkin ์์ค(์๋๋ฆฌ์ค/๊ฐ์/ํ๊ทธ ๋ฑ)์ ๋ํ ๋ชจ๋ ์ ๋ณด์ ์๋๋ฆฌ์ค์ ํ์ฌ ๊ฒฐ๊ณผ ์ํ๋ฅผ ํฌํจํ๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ ๊ฐ์ฒด์ ๋๋ค. ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ์ง ์์๋ ๋๋ค๋ ๊ฒ์ ์๋ฏธํ์ง๋ง ๋ง์ฐฌ๊ฐ์ง๋ก ํ์ฌ ํ๋ ์ด ์ํ์ ๋ํ ํฌ๋ช ์ฑ์ ์ ๊ณตํฉ๋๋ค.๋์งธ, ํํฐ ๊ฐ
HTH