5

我刚刚加入了一个开发现有 Java Web 应用程序的团队。我的任务是创建一个自动化集成测试套件,该套件应该在开发人员提交到我们的持续集成服务器 (TeamCity) 时运行,该服务器会自动部署到我们的暂存服务器 - 所以实际上测试将针对我们的暂存 Web 应用程序服务器运行。

我已经阅读了很多关于使用 Watir、Selenium 和 RWebSpec 等框架进行自动化集成测试的内容。我已经在所有这些中创建了测试,虽然我更喜欢 Watir,但我对任何事情都持开放态度。

我还不清楚的是如何为应用程序创建一个完整的测试套件,以及如何让该套件在执行某些脚本时完整执行。我可以愉快地创建不同复杂度的单独测试,但我对如何将所有内容组合成有用的东西的知识存在差距。

有没有人对如何创建一个完整的测试套件并让它自动执行有任何建议?

谢谢!

4

3 回答 3

2

通常,您将使用 Rake 来自动执行测试。假设您使用 Test::Unit 进行测试,您将使用以下内容设置您的 Rakefile:

require 'rubygems'
require 'rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.libs << "test"
  t.test_files = FileList.new 'test/**/ts_*.rb'.sort
  t.loader = :rake
  t.verbose = true
end

默认情况下,这会配置项目“test”文件夹下的所有测试套件文件。然后,您可以使用以下命令运行它们:

rake test

然后它将为您的整个项目执行所有测试套件。您可以使用以下语法告诉它运行特定测试:

rake TEST=path/under/test/folder/tc_filename.rb test

由于您使用的是 TeamCity,因此您可以创建一个构建并使用 Rake 运行器来执行您的测试套件。TeamCity 会将所有测试信息(输出、堆栈跟踪等)拉入 UI,就像使用 JUnit 一样。这是一个非常好的集成。

作为参考,您的测试套件看起来像这样:

require 'test/unit'
require 'path/relative/to/your/tests/tc_some_test1.rb'
require 'path/relative/to/your/tests/tc_some_test2.rb'

这样,您可以根据需要在每个测试套件中对测试用例进行排序。

于 2010-10-22T15:43:25.937 回答
1

我最终使用 Rspec 编写测试来对 Watir(准确地说是 Celerity)对象进行断言。这让我可以使用 Rake 自动运行测试。有几篇关于同时使用 Rspec 和 Rake 的好文章。我们的构建服务器(teamcity)有 Rake 任务的钩子,所以这很好用。我花了一段时间把所有的东西都拼凑在我的脑海里,所以我想我会在这里发布最终的解决方案。

于 2010-05-30T08:05:27.780 回答
0

要运行文件中的 Watir 测试,只需运行该文件:

$ ruby tests_1.rb

要在多个文件中执行测试,请运行所有文件。您可以创建一个将运行它们的文件(例如 all_tests.rb):

load "tests_1.rb"
load "tests_2.rb"

然后运行文件:

$ ruby​​ all_tests.rb

我不熟悉 TeamCity,但您应该可以从中运行 all_tests.rb。

于 2010-05-24T08:26:24.540 回答