저는 루비를 처음 사용하기 때문에 이것이 간단하거나 약간의 용어가 잘못되면 용서해줍니다.컨텍스트를 기반으로하는 단위 테스트에서 루비 로그 수준을 어떻게 변경할 수 있습니까?
단위 테스트 (실제로는 다른 프로젝트의 통합 테스트이지만 루비 테스트/유닛을 사용합니다)가 있으며 로그 객체의 인스턴스 변수를 설정하는 모듈에서 모두 포함됩니다. 개별 테스트를 실행할 때 log.level을 디버그하고 싶습니다.하지만 suite를 실행하면 log.level이 오류가되고 싶습니다. 내가 취하는 접근법으로 이것을 수행 할 수 있습니까? 아니면 코드를 재구성해야합니까?
여기 내가 지금까지 가지고있는 것의 작은 예가 있습니다.
로깅 모듈 :
#!/usr/bin/env ruby
require 'logger'
module MyLog
def setup
@log = Logger.new(STDOUT)
@log.level = Logger::DEBUG
end
end
시험 : 그 디렉토리에있는 모든 테스트의 구성
#!/usr/bin/env ruby
require 'test/unit'
require 'mylog'
class Test1 < Test::Unit::TestCase
include MyLog
def test_something
@log.info("About to test something")
# Test goes here
@log.info("Done testing something")
end
end
테스트 스위트 :
#!/usr/bin/env ruby
Dir.foreach(".") do |path|
if /it-.*\.rb/.match(File.basename(path))
require path
end
end
필자는 각 필수 테스트에 대한 테스트 스위트에서 로그 수준을 설정할 수 있어야하는 것처럼 보이지만 스위트 정의에 대해 더 명시해야한다고 생각합니다. – Stuart