2011-10-11 4 views
4

test :: unit을 사용하는 테스트 응용 프로그램에서는 다양한 소스에서 많은 데이터를 가져와야합니다. 이 작업은 한 번만 수행하고 싶습니다. 데이터는 읽기 전용이며 작성되지 않고 테스트간에 변경되지 않으며로드 (및로드에 대한 오류 검사)에는 약간의 시간이 걸립니다.Test :: Unit을 사용하면 모든 테스트 (각 테스트가 아닌) 전에 약간의 코드를 어떻게 실행할 수 있습니까?

매번 재설정해야하는 값이 있으며 그 값은 충분하지만 쉽게 액세스 할 수있는 값을 원한다면 어떻게해야합니까? 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

저는 특히 내 모든 테스트에 포함될 수있는 일부 모듈에이 할당을 밀어 넣을 수있는 솔루션에 관심이 있습니다. 모두이 데이터에 액세스해야하기 때문입니다.

+0

매우 비슷한 질문 : 당신은 단지 하나 개의 TestClass이있는 경우

, 당신은 TestCase.startup을 사용할 수 있습니다 : http://stackoverflow.com/questions/255969/in-rubys-testunittestcase-how-do-i-override-the-initialize-method –

답변

3

이 왜 시험 안에 그것을 필요합니까? 당신은 그것을 정의 할 수 있습니다 :

gem 'test-unit'#, '>= 2.1.1' #startup 
require 'test/unit' 

GLOBAL_DATA = 11 

class My_Tests < Test::Unit::TestCase 

    def test_1() 
    puts "Testing startup 1" 
    assert_equal(11, GLOBAL_DATA) 
    end 
end 

GLOBAL_DATA는 (싱글 톤) - 클래스 (인스턴스 각각) 수 있습니다. 영업 이익은 모든 테스트 스위트 전에, 하나의 테스트 스위트 전에 코드의 비트를 실행하고자 제외하고,

gem 'test-unit'#, '>= 2.1.1' #startup 
require 'test/unit' 


class My_Tests < Test::Unit::TestCase 
    def self.startup 
    puts "Define global_data " 
    @@global_data = 11 
    end 

    def test_1() 
    puts "Testing 1" 
    assert_equal(11,  @@global_data = 11) 
    end 
    def test_2() 
    puts "Testing 2" 
    assert_equal(11,  @@global_data = 11) 
    end 
end 
1

클래스의 맨 위에 놓을 수 있습니다. 그들은 사형 당할 것이고, 그러면 당신의 검사는 처형 될 것입니다.

1

당신은 설정 방법에서이 작업을 수행 할 수 있습니다 :

def setup 
    if !defined?(@@initial_data) 
     # Whatever you need to do to get your initial data 
     @@initial_data = foo 
    end 
    @other_data = bar 
    end 
관련 문제