내 테스트 클래스에 정의 된 전역 변수를 사용하는 데 문제가 있습니다. 그러면 라이브러리 파일에서 참조됩니다. Ruby 1.9.3p392 및 테스트 유닛 2.5.4를 사용하고 있습니다.루비 단위 테스트에서 전역 변수에 액세스
Started
E
===============================================================================
Error: test_001_login(Test_002)
NoMethodError: undefined method `goto' for nil:NilClass
(...)
23: end
24:
25: def test_001_login
=> 26: login('some_url', 'some_user', 'some_passw')
27: end
28:
29: end
===============================================================================
Finished in 3.0043 seconds.
1 tests, 0 assertions, 0 failures, 1 errors, 0 pendings, 0 omissions, 0 notifications
0% passed
0.33 tests/s, 0.00 assertions/s
:
require 'rubygems'
module Functions
def login(url, user, passw)
@browser.goto(url)
...
end
end
이것은 출력 :
이
은 테스트 실행 코드입니다 :require 'rubygems'
gem 'test-unit'
require 'test/unit'
require 'ci/reporter/rake/test_unit_loader'
load '../lib/functions.rb'
require 'watir'
class Test_002 < Test::Unit::TestCase
include Functions
class << self
def startup
@browser = Watir::Browser.new :ie
@browser.speed = :fast
end
def shutdown
@browser.close
end
end
def test_001_login
login('some_url', 'some_user', 'some_passw')
end
end
을 그리고 이것은 로그인 기능을 포함하는 라이브러리의 일부입니다
아이디어가 있으십니까?
이것은 의미가 있습니다. 어쩌면 이것이 내가 성취하고자하는 최선의 준비가 아닐 수도 있습니다. 테스트 스위트를 만들었고, Watir 및 각 블록 (단계 + 검증)에서 자동화 된 테스트 케이스를 단위 테스트 케이스로 포함하도록 구조화하는 방식을 만들었습니다. 그렇기 때문에 @browser 인스턴스를 만든 다음 나머지 단계를 단위 테스트로 실행하려고합니다. 이것을 처리 할 수있는 또 다른 방법이 있습니까? – Tedi
이전 테스트에 따라 테스트 케이스에서 각 테스트를 수행 할 계획 인 것 같습니다 (즉, 테스트 002는 테스트 001의 끝 부분에있는 브라우저 상태에 따라 달라집니다). 나는 한 번 같은 테스트 스위트로 작업했다. 이상적이지 않았습니다. 하나의 테스트가 실패하면 테스트를 다시 확인하기 위해 모든 것을 다시 실행해야합니다.브라우저 인스턴스를 공유하면 브라우저의 시작/종료를 저장할 수 있습니다. 그러나 테스트 자체는 의존해서는 안됩니다. –