5

我正在尝试在 Ruby 中设置一个测试套件来自动化 WebUI 的测试(使用 Watir)

各个测试都很好,并且都运行正常,但是我在使用套件时遇到了问题。

例如,如果我的一项测试是(其中 BaseTestClass 扩展了 Test::Unit::TestCase)

class Test3_1_3_1_2 < BaseTestClass
  def testHeightOfMainPanel
    assert(false, 'Not implemented')
  end
end

在我的 RunAllTests 脚本中,我正在尝试执行以下操作

require 'test/unit'

Test::Unit.at_start do
  #Lets create our own user for these tests
  createCCUser(User, Password)
end

Test::Unit.at_exit do
  #Delete our own user
  deleteUser(User)
end


Dir["./**/Test*.rb"].each{|s|
  puts s.to_s
  load s
}

所以基本上我想做的是在测试开始时创建一个新用户,运行测试然后删除用户。这是必要的,因为系统是单点登录(有点),如果我们为每个人使用相同的用户,则无法保证测试将正确执行(即其他人可以同时运行测试,然后第一个用户将被踢出)

我得到的错误是:未定义的方法at_start' and private methodat_exit' 调用

我知道我做错了什么,但是对于 Ruby 来说还很陌生,很难看出在哪里。基本上我需要的是一种执行一些设置的方法,运行所有可以找到的测试,然后进行清理。每个测试都有自己独立的设置和拆卸方法

我还应该补充一点,我已经尝试了上述相同的许多变体,例如

require 'test/unit'

class Temp < Test::Unit::TestCase
  Test::Unit.at_exit do
    #Delete our own user
    deleteUser(User)
  end


  Test::Unit.at_start do
    #Lets create our own user for these tests
    createCCUser(User, Password)
  end

  Dir["./**/Test*.rb"].each { |s|
    puts s.to_s
    load s
  }
end

我还是不明白。任何帮助,将不胜感激

4

1 回答 1

5

我认为问题在于,假设您使用的是 Ruby 1.9.3,那么对于require 'test/unit'.

在 Ruby 1.9.3 中,require 'test/unit'将需要“Minitest” gem。此 gem 中不存在您要使用的方法。

和方法存在于测试单元gem 中at_startat_exit

假设您同时拥有 Minitest gem(默认安装在 Ruby 1.9 中)和 Test-Unit gem(使用 手动安装gem install test-unit),您需要明确说明您想要 test-unit gem。

在要求 test/unit 之前,指定 test-unit gem 的用法:

gem 'test-unit'
require 'test/unit'
于 2012-11-08T15:27:48.810 回答