초간단 루비 테스트 환경 셋팅하기

Hschoi han Lucius.choi님이 일 년 이상전에 작성함. 1 811 
루비 버전 `1.9`부터는 `Test::Unit` 대신 `Minitest`가 기본 내장되어 있다. 따라서 별다른 추가 옵션 없이 루비 테스트를 바로 실행할 수 있다. 이 글에서는 루비가 설치되어 있는 상태에서 가장 빠르게 테스트 스크립트 작성하는 방법을 소개한다. 우선, 로컬 시스템에 루비가 설치되어 있어야 하고 `1.9+` 버전이 설치되어 있어야 한다. 또한 테스트 자동화를 위해 세 개의 젬(`guard`,`guard-minitest`, `minitest-reporters`)을 미리 설치해 둔다. ```bash $ gem install guard guard-minitest minitest-reporters ``` 작업할 디렉토리를 생성하고 해당 디렉토리로 이동한다. ```bash $ mkdir sample_project && cd sample_project ``` `guard` 젬을 `minitest`용으로 초기화 한다. ```bash $ guard init minitest ``` #### 1. 데모 클래스를 작성한다. 먼저, `lib/` 디렉토리를 생성한다. 그리고, `lib/` 디렉토리에 `demo.rb` 파일을 생성하고 아래와 같이 `Demo` 클래스를 작성한다. ```ruby class Demo def title "Hello" end end ``` #### 2. 테스트 헬퍼 파일 생성 `test/` 디렉토리를 생성한 후, `test/test_helper.rb` 파일을 생성하고, 아래와 같이 작성한다. ```ruby require "minitest/autorun" require_relative "../lib/demo" require "minitest/reporters" Minitest::Reporters.use! ``` #### 3. 테스트 클래스를 작성한다. `test/` 디렉토리에 `test_demo.rb` 파일을 생성하고 아래와 같이 `TestDemo` 클래스를 작성한다. ```ruby require_relative 'test_helper' class TestDemo < MiniTest::Test def setup @demo = Demo.new end def test_title_is_hello assert_equal "Hello", @demo.title end end ``` #### 4. 테스트를 실행한다. ```bash $ ruby test/test_demo.rb Run options: --seed 14575 # Running: . Finished in 0.000741s, 1349.7626 runs/s, 1349.7626 assertions/s. 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips ``` #### 5. 테스트 자동화 이제 커맨드라인에서 아래와 같이 실행하면 소스코드 변경시마다 자동으로 테스트가 실행된다. ```bash $ guard 16:20:26 - INFO - Guard::Minitest 2.4.4 is running, with Minitest::Unit 5.8.4! 16:20:26 - INFO - Running: all tests Started with run options --seed 51029 1/1: [=================================] 100% Time: 00:00:00, Time: 00:00:00 Finished in 0.00107s 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips 16:20:26 - INFO - Guard is now watching at '/Users/hyo/again2011/minitest/1st' 16:20:31 - INFO - Running: test/test_demo.rb Started with run options --seed 58720 FAIL["test_demo_title", TestDemo, 0.000847670016810298] test_demo_title#TestDemo (0.00s) Expected: "Hellox" Actual: "Hello" /Users/hyo/again2011/minitest/1st/test/test_demo.rb:8:in `test_demo_title' 1/1: [=================================] 100% Time: 00:00:00, Time: 00:00:00 Finished in 0.00145s 1 tests, 1 assertions, 1 failures, 0 errors, 0 skips [1] guard(main)> ``` --- ## 업데이트 필요한 젬을 모아서 Gemfile로 작성한다. ```ruby source "https://rubygems.org" gem 'guard' gem 'guard-minitest' gem 'minitest' gem 'minitest-reporters' gem 'mini_backtrace' gem 'terminal-notifier' gem 'terminal-notifier-guard' ``` 그리고 번들 인스톨한다. ```bash $ bundle install ``` 다시 `guard`를 실행한다. ```bash $ bundle exec guard ```

Comments (1)

good
B61da6cc2d8d6d76ae9027fb7c10f09d Steveim1201님이 12달전에 작성함.