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.7'

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



285
286
287
# File 'lib/buildr/java/tests.rb', line 285

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

.versionObject



281
282
283
# File 'lib/buildr/java/tests.rb', line 281

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

Instance Method Details

#run(tests, dependencies) ⇒ Object

:nodoc:



303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
# File 'lib/buildr/java/tests.rb', line 303

def run(tests, dependencies) #:nodoc:
  cmd_args = [ 'org.testng.TestNG', '-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}" }

  begin
    Java::Commands.java cmd_args, 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
    # return the list of passed tests
    return tests - failed
  end
end

#tests(dependencies) ⇒ Object

:nodoc:



297
298
299
300
301
# File 'lib/buildr/java/tests.rb', line 297

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