С Test :: Unit, как я могу запустить немного кода перед всеми тестами (но не каждый тест)? - PullRequest
4 голосов
/ 11 октября 2011

В моем тестовом приложении, которое использует test :: unit, мне нужно начать с извлечения данных из различных источников.Я хотел бы сделать это только один раз - данные только читаются, а не записываются и не меняются между тестами, а загрузка (и проверка ошибок для загрузки) занимает некоторое время.

Тамзначения, которые я действительно хочу сбрасывать каждый раз, и это достаточно просто, но что, если я хочу постоянные доступные значения?Какой лучший способ сделать это?

Меня особенно интересуют решения, которые позволили бы мне передать эти назначения некоторым модулям, которые могут быть включены во все мои тесты, поскольку всем им нужен доступ к этим данным.

Ответы [ 3 ]

3 голосов
/ 12 октября 2011

Зачем вам это нужно внутри теста?Вы можете определить это gloabl:

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 может быть (singleton) -классом (соответствующим экземпляру).

Если у вас только один тестовый класс, вы можете использовать TestCase.startup:

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
2 голосов
/ 11 октября 2011

Вы можете сделать это в методе настройки:

  def setup
    if !defined?(@@initial_data)
      # Whatever you need to do to get your initial data
      @@initial_data = foo
    end
    @other_data = bar
  end
2 голосов
/ 11 октября 2011

Вы можете просто поставить их на первое место в классе. Они будут выполнены, и тогда ваши тесты будут выполнены.

...