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

pak*_*eha 5 testing continuous-integration selenium integration-testing watir

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

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

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

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

谢谢!

JEH*_*JEH 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
Run Code Online (Sandbox Code Playgroud)

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

rake test
Run Code Online (Sandbox Code Playgroud)

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

rake TEST=path/under/test/folder/tc_filename.rb test
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 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'
Run Code Online (Sandbox Code Playgroud)

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