org.scalatest.junit

trait JUnitSuite

[source: org/scalatest/junit/JUnitSuite.scala]

trait JUnitSuite
extends Suite with AssertionsForJUnit
A suite of tests that can be run with either JUnit or ScalaTest. This trait allows you to write JUnit 4 tests with ScalaTest's more concise assertion syntax as well as JUnit's assertions (assertEquals, etc.). You create tests by defining methods that are annotated with Test, and can create fixtures with methods annotated with Before and After. For example:
 import org.scalatest.junit.JUnitSuite
 import scala.collection.mutable.ListBuffer
 import _root_.org.junit.Test
 import _root_.org.junit.Before

 class TwoSuite extends JUnitSuite {

   var sb: StringBuilder = _
   var lb: ListBuffer[String] = _

   @Before override def initialize() {
     sb = new StringBuilder("ScalaTest is ")
     lb = new ListBuffer[String]
   }

   @Test def verifyEasy() {
     sb.append("easy!")
     assert(sb.toString === "ScalaTest is easy!")
     assert(lb.isEmpty)
     lb += "sweet"
   }

   @Test def verifyFun() {
     sb.append("fun!")
     assert(sb.toString === "ScalaTest is fun!")
     assert(lb.isEmpty)
   }
 }
 

To execute JUnitSuites with ScalaTest's Runner, you must include JUnit's jar file on the class path or runpath. This version of JUnitSuite was tested with JUnit version 4.4.

Instances of this trait are not thread safe.

Author
Bill Venners
Daniel Watson
Joel Neely
Method Summary
override def expectedTestCount (filter : Filter) : Int
Returns the number of tests expected to be run by JUnit when run is invoked on this JUnitSuite.
override def run (testName : scala.Option[java.lang.String], report : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Runs this suite of tests.
protected override final def runNestedSuites (reporter : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this trait's run method delegates to JUnit to run its tests.
protected override final def runTest (testName : java.lang.String, reporter : Reporter, stopper : Stopper, configMap : scala.collection.immutable.Map[java.lang.String, Any], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this traits's run method delegates to JUnit to run its tests.
protected override final def runTests (testName : scala.Option[java.lang.String], reporter : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this trait's run method delegates to JUnit to run its tests.
override def tags : scala.collection.immutable.Map[java.lang.String, scala.collection.immutable.Set[java.lang.String]]
A Map whose keys are String tag names with which tests in this Suite are marked, and whose values are the Set of test names marked with each tag. If this Suite contains no tags, this method returns an empty Map.
override def testNames : scala.collection.immutable.Set[java.lang.String]
Returns the set of test names that will be executed by JUnit when run is invoked on an instance of this class, or the instance is passed directly to JUnit for running.
protected override final def withFixture (test : NoArgTest) : Unit
Throws UnsupportedOperationException, because this method is unused by this class, given this class's run method delegates to JUnit to run its tests.
Methods inherited from Suite
nestedSuites, execute, execute, execute, execute, groups, suiteName, pending, pendingUntilFixed
Methods inherited from Assertions
assert, assert, assert, assert, convertToEqualizer, intercept, expect, expect, fail, fail, fail, fail
Methods inherited from AnyRef
getClass, hashCode, equals, clone, toString, notify, notifyAll, wait, wait, wait, finalize, ==, !=, eq, ne, synchronized
Methods inherited from Any
==, !=, isInstanceOf, asInstanceOf
Method Details
protected override final def withFixture(test : NoArgTest) : Unit
Throws UnsupportedOperationException, because this method is unused by this class, given this class's run method delegates to JUnit to run its tests.

The main purpose of this method implementation is to render a compiler error an attempt to mix in a trait that overrides withFixture. Because this trait does not actually use withFixture, the attempt to mix in behavior would very likely not work.

Parameters
test - the no-arg test function to run with a fixture
Overrides
Suite.withFixture

protected override final def runNestedSuites(reporter : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this trait's run method delegates to JUnit to run its tests.

The main purpose of this method implementation is to render a compiler error an attempt to mix in a trait that overrides runNestedSuites. Because this trait does not actually use runNestedSuites, the attempt to mix in behavior would very likely not work.

Parameters
reporter - the Reporter to which results will be reported
stopper - the Stopper that will be consulted to determine whether to stop execution early.
filter - a Filter with which to filter tests based on their tags
configMap - a Map of key-value pairs that can be used by the executing Suite of tests.
distributor - an optional Distributor, into which to put nested Suites to be run by another entity, such as concurrently by a pool of threads. If None, nested Suites will be run sequentially.
tracker - a Tracker tracking Ordinals being fired by the current thread.
Throws
UnsupportedOperationException - always.
Overrides
Suite.runNestedSuites

protected override final def runTests(testName : scala.Option[java.lang.String], reporter : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this trait's run method delegates to JUnit to run its tests.

The main purpose of this method implementation is to render a compiler error an attempt to mix in a trait that overrides runTests. Because this trait does not actually use runTests, the attempt to mix in behavior would very likely not work.

Parameters
testName - an optional name of one test to run. If None, all relevant tests should be run. I.e., None acts like a wildcard that means run all relevant tests in this Suite.
reporter - the Reporter to which results will be reported
stopper - the Stopper that will be consulted to determine whether to stop execution early.
filter - a Filter with which to filter tests based on their tags
configMap - a Map of key-value pairs that can be used by the executing Suite of tests.
distributor - an optional Distributor, into which to put nested Suites to be run by another entity, such as concurrently by a pool of threads. If None, nested Suites will be run sequentially.
tracker - a Tracker tracking Ordinals being fired by the current thread.
Throws
UnsupportedOperationException - always.
Overrides
Suite.runTests

protected override final def runTest(testName : java.lang.String, reporter : Reporter, stopper : Stopper, configMap : scala.collection.immutable.Map[java.lang.String, Any], tracker : Tracker) : Unit
Throws UnsupportedOperationException, because this method is unused by this trait, given this traits's run method delegates to JUnit to run its tests.

The main purpose of this method implementation is to render a compiler error an attempt to mix in a trait that overrides runTest. Because this trait does not actually use runTest, the attempt to mix in behavior would very likely not work.

Parameters
testName - the name of one test to run.
reporter - the Reporter to which results will be reported
stopper - the Stopper that will be consulted to determine whether to stop execution early.
configMap - a Map of key-value pairs that can be used by the executing Suite of tests.
tracker - a Tracker tracking Ordinals being fired by the current thread.
Throws
UnsupportedOperationException - always.
Overrides
Suite.runTest

override def testNames : scala.collection.immutable.Set[java.lang.String]
Returns the set of test names that will be executed by JUnit when run is invoked on an instance of this class, or the instance is passed directly to JUnit for running.

The iterator obtained by invoking elements on this returned Set will produce the test names in their natural order, as determined by String's compareTo method. Nevertheless, this method is not consulted by JUnit when it runs the tests, and JUnit may run the tests in any order.

Overrides
Suite.testNames

override def expectedTestCount(filter : Filter) : Int
Returns the number of tests expected to be run by JUnit when run is invoked on this JUnitSuite.

If tagsToInclude in the passed Filter is defined, this class's implementation of this method returns 0. Else this class's implementation of this method returns the size of the set returned by testNames on the current instance, less the number of tests that were annotated with org.junit.Ignore.

Overrides
Suite.expectedTestCount

override def tags : scala.collection.immutable.Map[java.lang.String, scala.collection.immutable.Set[java.lang.String]]
A Map whose keys are String tag names with which tests in this Suite are marked, and whose values are the Set of test names marked with each tag. If this Suite contains no tags, this method returns an empty Map.

This trait's implementation of this method uses Java reflection to discover any Java annotations attached to its test methods. The fully qualified name of each unique annotation that extends TagAnnotation is considered a tag. This trait's implementation of this method, therefore, places one key/value pair into to the Map for each unique tag annotation name discovered through reflection. The mapped value for each tag name key will contain the test method name, as provided via the testNames method.

Subclasses may override this method to define and/or discover tags in a custom manner, but overriding method implementations should never return an empty Set as a value. If a tag has no tests, its name should not appear as a key in the returned Map.

Note, the TagAnnotation annotation was introduced in ScalaTest 1.0, when "groups" were renamed to "tags." In 1.0 and 1.1, the TagAnnotation will continue to not be required by an annotation on a Suite method. Any annotation on a Suite method will be considered a tag until 1.2, to give users time to add TagAnnotations on any tag annotations they made prior to the 1.0 release. From 1.2 onward, only annotations themselves annotated by TagAnnotation will be considered tag annotations.

Overrides
Suite.tags

override def run(testName : scala.Option[java.lang.String], report : Reporter, stopper : Stopper, filter : Filter, configMap : scala.collection.immutable.Map[java.lang.String, Any], distributor : scala.Option[Distributor], tracker : Tracker) : Unit
Runs this suite of tests.

If testName is None, this trait's implementation of this method calls these two methods on this object in this order:

  1. runNestedSuites(report, stopper, tagsToInclude, tagsToExclude, configMap, distributor)
  2. runTests(testName, report, stopper, tagsToInclude, tagsToExclude, configMap)

If testName is defined, then this trait's implementation of this method calls runTests, but does not call runNestedSuites. This behavior is part of the contract of this method. Subclasses that override run must take care not to call runNestedSuites if testName is defined. (The OneInstancePerTest trait depends on this behavior, for example.)

Subclasses and subtraits that override this run method can implement them without invoking either the runTests or runNestedSuites methods, which are invoked by this trait's implementation of this method. It is recommended, but not required, that subclasses and subtraits that override run in a way that does not invoke runNestedSuites also override runNestedSuites and make it final. Similarly it is recommended, but not required, that subclasses and subtraits that override run in a way that does not invoke runTests also override runTests (and runTest, which this trait's implementation of runTests calls) and make it final. The implementation of these final methods can either invoke the superclass implementation of the method, or throw an UnsupportedOperationException if appropriate. The reason for this recommendation is that ScalaTest includes several traits that override these methods to allow behavior to be mixed into a Suite. For example, trait BeforeAndAfterEach overrides runTestss. In a Suite subclass that no longer invokes runTests from run, the BeforeAndAfterEach trait is not applicable. Mixing it in would have no effect. By making runTests final in such a Suite subtrait, you make the attempt to mix BeforeAndAfterEach into a subclass of your subtrait a compiler error. (It would fail to compile with a complaint that BeforeAndAfterEach is trying to override runTests, which is a final method in your trait.)

Parameters
testName - an optional name of one test to run. If None, all relevant tests should be run. I.e., None acts like a wildcard that means run all relevant tests in this Suite.
reporter - the Reporter to which results will be reported
stopper - the Stopper that will be consulted to determine whether to stop execution early.
filter - a Filter with which to filter tests based on their tags
configMap - a Map of key-value pairs that can be used by the executing Suite of tests.
distributor - an optional Distributor, into which to put nested Suites to be run by another entity, such as concurrently by a pool of threads. If None, nested Suites will be run sequentially.
tracker - a Tracker tracking Ordinals being fired by the current thread.
Throws
NullPointerException - if any passed parameter is null.
IllegalArgumentException - if testName is defined, but no test with the specified test name exists in this Suite
Overrides
Suite.run


Copyright (C) 2001-2009 Artima, Inc. All rights reserved.