集成测试整个*现有*应用程序(带自动执行测试套件)

时间:2010-05-23 23:55:40

标签: testing continuous-integration selenium integration-testing watir

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

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

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

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

谢谢!

3 个答案:

答案 0 :(得分: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'

通过这种方式,您可以根据需要对每个测试套件中的测试用例进行排序。

答案 1 :(得分:1)

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

答案 2 :(得分: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。