Cucumber-js: 병렬 μ˜΅μ…˜μ€ 이벀트 ν”„λ‘œν† μ½œμ—μ„œ μ–΄λ–»κ²Œ μž‘λ™ν•©λ‹ˆκΉŒ?

에 λ§Œλ“  2018λ…„ 02μ›” 05일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: cucumber/cucumber-js

JSON 포맷터와 같은 test-run-finished μ—λ§Œ μ—°κ²°ν•˜λŠ” μ‚¬μš©μž 지정 ν¬λ§·ν„°λŠ” 병렬화될 λ•Œ μ˜λ„ν•œ λŒ€λ‘œ μž‘λ™ν•˜μ§€λ§Œ test-(step|case)-started 와 같은 이전 이벀트λ₯Ό μ‚¬μš©ν•˜κ³  μˆœμ„œκ°€ μ§€μ •λœ ν¬λ§·ν„°λŠ” 좜λ ₯ λ¬Έμ„œ ꡬ쑰λ₯Ό λ¬΄νš¨ν™”ν•˜λŠ” μˆœμ„œλŒ€λ‘œ 좜λ ₯이 λ‘œκ·Έμ•„μ›ƒλ©λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•  κ³„νšμ΄ μžˆμŠ΅λ‹ˆκΉŒ? μž‘μ—…μž κΈ°μ€€μœΌλ‘œ 좜λ ₯을 λ²„νΌλ§ν•˜κ³  μ™„λ£Œλ˜λ©΄ λ§ˆμŠ€ν„°μ— ν•œ λ²ˆμ— λͺ¨λ‘ 기둝할 수 μžˆμŠ΅λ‹ˆκΉŒ?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

이 κΈ°λŠ₯이 맀우 ν•„μš”ν•©λ‹ˆλ‹€!!!

λͺ¨λ“  9 λŒ“κΈ€

각 μ΄λ²€νŠΈμ—λŠ” 버퍼링이 μ•„λ‹Œ 이전 μ΄λ²€νŠΈμ— μ—°κ²°ν•  수 μžˆλ„λ‘ μΆ©λΆ„ν•œ 정보가 ν¬ν•¨λ˜μ–΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ 좜λ ₯의 μ‹œμž‘ 뢀뢄을 λ†“μΉ˜κΈ° λ•Œλ¬Έμ— 'μ’…λ£Œ' 이벀트만 μ—°κ²°λ˜λŠ” 경우 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. Pretty formatter 및 IntelliJ 기반 νŽΈμ§‘κΈ°μ˜ ν…ŒμŠ€νŠΈ μ‹€ν–‰κΈ°λ₯Ό 예둜 μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 μž‘λ™ν•©λ‹ˆλ‹€.

  1. μ‹œμž‘ μ΄λ²€νŠΈμ— 'opening' 문을 κΈ°λ‘ν•©λ‹ˆλ‹€. 예쁜 경우 -- Scenario: Foo , IntelliJ의 경우 -- TeamCity ν˜•μ‹ 주석 #teamcity[testStarted]
  2. ν¬λ§·ν„°μ˜ 초기 좜λ ₯ 이후에 자체 둜그λ₯Ό μΈμ‡„ν•˜λŠ” ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  3. μ’…λ£Œ 이벀트, pass/fail μš”μ•½ λ˜λŠ” ##teamcity[testFinished] 에 마감 문을 κΈ°λ‘ν•©λ‹ˆλ‹€.

μˆœμ„œλŠ” ν…ŒμŠ€νŠΈκ°€ κΈ°λ‘ν•˜λŠ” λͺ¨λ“  것 μ•žμ— μ—¬λŠ” 문을 κ°–κ³  λ‚˜μ€‘μ— λ‹«λŠ” 문을 κ°–λŠ” 것과 같이 μ€‘μš”ν•©λ‹ˆλ‹€. λ‹€λ₯Έ ν…ŒμŠ€νŠΈλŠ” 그와 λ³‘λ ¬λ‘œ 아무 것도 κΈ°λ‘ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€. 그렇지 μ•ŠμœΌλ©΄ μ–΄λ–€ 좜λ ₯이 μ–΄λ–€ ν…ŒμŠ€νŠΈμ— μ†ν•˜λŠ”μ§€ ν˜Όλ™λ  κ²ƒμž…λ‹ˆλ‹€. 버퍼링은 각 좜λ ₯이 λΆ„λ¦¬λ˜κ³  μ›μžμ  μž‘μ—…μ—μ„œ λ§ˆμŠ€ν„°μ— 둜그온되기 λ•Œλ¬Έμ— 이λ₯Ό μ²˜λ¦¬ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

isParallel μ˜΅μ…˜μ„ μ‚¬μš©μž μ •μ˜ 포맷터에 μ „λ‹¬ν•˜μ—¬ test-case-started / test-step μ΄λ²€νŠΈμ—μ„œ 좜λ ₯ν•˜λŠ” 것이 뒀죽박죽이 λ˜λ―€λ‘œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ’…λ£Œλœ μ΄λ²€νŠΈμ—μ„œλ§Œ 좜λ ₯ν•΄μ•Ό 함을 μ•Œλ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œμ— λŒ€ν•΄ 더 λ§Žμ€ λ…Όμ˜κ°€ ν•„μš”ν•©λ‹ˆλ‹€. ν˜„μž¬ λͺ¨λ“  포맷터λ₯Ό μ‚¬μš©ν•˜λ©΄ 터미널에 μ“°κΈ°λ₯Ό μ‹œλ„ν•˜λŠ” λ™μ•ˆ I/O 좩돌둜 인해 였이 λŸ¬λ„ˆκ°€ μΆ©λŒν•  μœ„ν—˜μ΄ μžˆμŠ΅λ‹ˆλ‹€. 진행λ₯  ν‘œμ‹œμ€„ ν¬λ§·ν„°λŠ” ν‘œμ‹œμ€„μ„ 따라 μ΄λ™ν•œ λ‹€μŒ λ§ˆμ§€λ§‰μ— μš”μ•½μ„ λ³΄κ³ ν•˜λŠ” 경우 병렬 λŸ¬λ„ˆμ— μ΄μƒμ μž…λ‹ˆλ‹€.

κ³„νšμ€ 였이의 λ©”μ‹œμ§€ μŠ€νŠΈλ¦Όμ„ μ‚¬μš©ν•˜λŠ” λ…λ¦½ν˜• ν¬λ§·ν„°λ‘œ μ „ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ…Έλ ˆν¬ μ—μ„œ λ‘œλ“œλ§΅ 및 dots-formatter 및 pretty-formatter (WIP) 보기

이 κΈ°λŠ₯이 맀우 ν•„μš”ν•©λ‹ˆλ‹€!!!

μ—¬λ³΄μ„Έμš”! 얼루어 리포터와 ν•¨κ»˜ 였이 jsλ₯Ό μ‹€ν–‰ν•  수 μžˆλŠ” κΈ°νšŒκ°€ μžˆλ‚˜μš”? 였이-js --parallel 2 -t @debug --format
미리 κ°μ‚¬ν•©λ‹ˆλ‹€!

μ—¬κΈ°μ—μ„œ @yevgen-getalo와 λ™μΌν•œ λ¬Έμ œμž…λ‹ˆλ‹€.

v7.0.0으둜 μ’…λ£ŒλŠ” μœ„μ—μ„œ μ–ΈκΈ‰ν•œ μƒˆλ‘œμš΄ λ©”μ‹œμ§€ ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ„œ $THING_started 및 $THING_finished μ΄λ²€νŠΈλŠ” IDλ₯Ό 톡해 μ•ˆμ •μ μœΌλ‘œ ν•¨κ»˜ 묢일 수 μžˆμŠ΅λ‹ˆλ‹€. eventDataCollector.query 개체( @cucumber/query 의 μΈμŠ€ν„΄μŠ€)κ°€ 이 쀑 일뢀에 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰