Class: Buildr::TestNG

Inherits:
Buildr::TestFramework::Java show all
Defined in:
lib/buildr/java/tests.rb

Overview

TestNG test framework. To use in your project:

test.using :testng

Support the following options:

  • :properties – Hash of properties passed to the test suite.

  • :java_args – Arguments passed to the JVM.

Constant Summary collapse

VERSION =
'5.10'

Instance Attribute Summary

Attributes inherited from Buildr::TestFramework::Base

#options, #task

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Buildr::TestFramework::Java

applies_to?

Methods inherited from Buildr::TestFramework::Base

applies_to?, #dependencies, #initialize, to_sym

Constructor Details

This class inherits a constructor from Buildr::TestFramework::Base

Class Method Details

.dependenciesObject



310
311
312
# File 'lib/buildr/java/tests.rb', line 310

def dependencies
  ["org.testng:testng:jar:jdk15:#{version}"]+ JMock.dependencies
end

.versionObject



306
307
308
# File 'lib/buildr/java/tests.rb', line 306

def version
  Buildr.settings.build['testng'] || VERSION
end

Instance Method Details

#run(tests, dependencies) ⇒ Object

:nodoc:



328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
# File 'lib/buildr/java/tests.rb', line 328

def run(tests, dependencies) #:nodoc:
  cmd_args = ['-log', '2', '-sourcedir', task.compile.sources.join(';'), '-suitename', task.project.id ]
  cmd_args << '-d' << task.report_to.to_s
  # run all tests in the same suite
  cmd_args << '-testclass' << tests
  
  cmd_options = { :properties=>options[:properties], :java_args=>options[:java_args],
    :classpath=>dependencies, :name => "TestNG in #{task.send(:project).name}" }
  
  tmp = nil
  begin
    tmp = Tempfile.open("testNG")
    tmp.write cmd_args.join("\n")
    tmp.close
    Java::Commands.java ['org.testng.TestNG', "@#{tmp.path}"], cmd_options
    return tests
  rescue
    # testng-failed.xml contains the list of failed tests *only*
    report = File.read(File.join(task.report_to.to_s, 'testng-failed.xml'))
    failed = report.scan(/<class name="(.*?)">/im).flatten
    error "TestNG regexp returned unexpected failed tests #{failed.inspect}" unless (failed - tests).empty?
    # return the list of passed tests
    return tests - failed
  ensure
    tmp.close unless tmp.nil?
  end
end

#tests(dependencies) ⇒ Object

:nodoc:



322
323
324
325
326
# File 'lib/buildr/java/tests.rb', line 322

def tests(dependencies) #:nodoc:
  filter_classes(dependencies,
                 :class_annotations => %w{org.testng.annotations.Test},
                 :method_annotations => %w{org.testng.annotations.Test})
end