Packages

  • package root
    Definition Classes
    root
  • package org
    Definition Classes
    root
  • package scalatest

    ScalaTest's main traits, classes, and other members, including members supporting ScalaTest's DSL for the Scala interpreter.

    ScalaTest's main traits, classes, and other members, including members supporting ScalaTest's DSL for the Scala interpreter.

    Definition Classes
    org
  • trait FixtureTestSuite extends FixtureSuite with TestSuite

    The base trait for ScalaTest's synchronous testing styles that accept a fixture object passed into tests.

    The base trait for ScalaTest's synchronous testing styles that accept a fixture object passed into tests. This trait defines a withFixture lifecycle method that takes as its parameter a test function that accepts a fixture object and returns an Outcome.

    The abstract withFixture method add by this trait has the following signature:

    def withFixture(test: OneArgTest): Outcome
    

    The apply method of test function interface, OneArgTest, also returns Outcome:

    // In trait OneArgTest:
    def apply(fixture: FixtureParam): Outcome
    

    Because the result of a test is an Outcome, when the test function returns, the test body must have determined an outcome already. It will already be one of Succeeded, Failed, Canceled, or Pending. This is also true when withFixture(OneArgTest) returns: because the result type of withFixture(OneArgTest) is Outcome, the test has by definition already finished execution.

    The recommended way to ensure cleanup is performed after a test body finishes execution is to use a try-finally clause. Using try-finally will ensure that cleanup will occur whether the test function completes abruptly by throwing a suite-aborting exception, or returns normally yielding an Outcome. Note that the only situation in which a test function will complete abruptly with an exception is if the test body throws a suite-aborting exception. Any other exception will be caught and reported as either a Failed, Canceled, or Pending.

    To enable the stacking of traits that define withFixture(NoArgTest), it is a good idea to let withFixture(NoArgTest) invoke the test function instead of invoking the test function directly. To do so, you'll need to convert the OneArgTest to a NoArgTest. You can do that by passing the fixture object to the toNoArgTest method of OneArgTest. In other words, instead of writing “test(theFixture)”, you'd delegate responsibility for invoking the test function to the withFixture(NoArgTest) method of the same instance by writing:

    withFixture(test.toNoArgTest(theFixture))
    

    The withFixture method is designed to be stacked, and to enable this, you should always call the super implementation of withFixture, and let it invoke the test function rather than invoking the test function directly. In other words, instead of writing “test(...)”, you should write “super.withFixture(test)”. Thus, the recommended structure of a withFixture implementation that performs cleanup looks like this:

    // Your implementation
    type FixtureParam = String
    
    override def withFixture(test: OneArgTest) = { // Perform setup here val theFixture = "hello" try { withFixture(test.toNoArgTest(theFixture)) // Invoke the test function } finally { // Perform cleanup here } }

    If you have no cleanup to perform, you can write withFixture like this instead:

    // Your implementation
    type FixtureParam = String
    
    override def withFixture(test: NoArgTest) = { // Perform setup here val theFixture = "hello" withFixture(test.toNoArgTest(theFixture)) // Invoke the test function }

    If you want to perform an action only for certain outcomes, you can use a pattern match. For example, if you want to perform an action if a test fails, you'd match on Failed, like this:

    // Your implementation
    type FixtureParam = String
    
    override def withFixture(test: NoArgTest) = {
    // Perform setup here val theFixture = "hello"
    val outcome = withFixture(test.toNoArgTest(theFixture)) // Invoke the test function
    outcome match { case failed: Failed => // perform action that you want to occur // only if a test fails here failed case other => other } }

    If you want to change the outcome in some way in withFixture, you can also use a pattern match. For example, if a particular exception intermittently causes a test to fail, and can transform those failures into cancelations, like this:

    // Your implementation
    type FixtureParam = String
    
    override def withFixture(test: NoArgTest) = {
    val theFixture = "hello"
    withFixture(test.toNoArgTest(theFixture)) match { case Failed(ex: ParticularException) => Canceled("Muting flicker", ex) case other => other } }

    Definition Classes
    scalatest
  • CheckingEqualizer
  • Equalizer
  • FixtureParam
  • NoArgTest
  • OneArgTest

trait OneArgTest extends (FixtureParam) => Outcome with TestData

A test function taking a fixture parameter and returning an Outcome.

For more detail and examples, see the documentation for trait fixture.FlatSpec.

Attributes
protected
Self Type
OneArgTest
Source
FixtureTestSuite.scala
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. OneArgTest
  2. TestData
  3. Function1
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def apply(fixture: FixtureTestSuite.FixtureParam): Outcome

    Runs the test, using the passed FixtureParam.

    Runs the test, using the passed FixtureParam.

    fixture

    the FixtureParam

    returns

    an instance of Outcome

    Definition Classes
    OneArgTest → Function1
  2. abstract val configMap: ConfigMap

    A ConfigMap containing objects that can be used to configure the fixture and test.

    A ConfigMap containing objects that can be used to configure the fixture and test.

    Definition Classes
    TestData
  3. abstract val name: String

    The name of this test.

    The name of this test.

    See the main documentation for this trait for an explanation of the difference between name, text, and scopes.

    Definition Classes
    TestData
  4. abstract val pos: Option[Position]
    Definition Classes
    TestData
  5. abstract val scopes: IndexedSeq[String]

    An immutable IndexedSeq containing the text for any "scopes" enclosing this test, in order from outermost to innermost scope.

    An immutable IndexedSeq containing the text for any "scopes" enclosing this test, in order from outermost to innermost scope.

    See the main documentation for this trait for an explanation of the difference between name, text, and scopes. If a test has no surrounding scopes, this field will contain an empty IndexedSeq.

    Definition Classes
    TestData
  6. abstract val tags: Set[String]

    Tag names for this test.

    Tag names for this test.

    Definition Classes
    TestData
  7. abstract val text: String

    The "text" for this test.

    The "text" for this test.

    See the main documentation for this trait for an explanation of the difference between name, text, and scopes. If a test has no surrounding scopes, this field will contain the same string as name.

    Definition Classes
    TestData

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. def andThen[A](g: (Outcome) => A): (FixtureTestSuite.FixtureParam) => A
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native()
  7. def compose[A](g: (A) => FixtureTestSuite.FixtureParam): (A) => Outcome
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  8. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  9. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable])
  11. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  13. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  15. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  16. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  17. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  18. def toNoArgTest(fixture: FixtureTestSuite.FixtureParam): FixtureTestSuite.NoArgTest

    Convert this OneArgTest to a NoArgTest whose name and configMap methods return the same values as this OneArgTest, and whose apply method invokes this OneArgTest's apply method, passing in the given fixture.

    Convert this OneArgTest to a NoArgTest whose name and configMap methods return the same values as this OneArgTest, and whose apply method invokes this OneArgTest's apply method, passing in the given fixture.

    This method makes it easier to invoke the withFixture method that takes a NoArgTest. For example, if a FixtureSuite mixes in SeveredStackTraces, it will inherit an implementation of withFixture(NoArgTest) provided by SeveredStackTraces that implements the stack trace severing behavior. If the FixtureSuite does not delegate to that withFixture(NoArgTest) method, the stack trace severing behavior will not happen. Here's how that might look in a FixtureSuite whose FixtureParam is StringBuilder:

    def withFixture(test: OneArgTest) = {
      withFixture(test.toNoArgTest(new StringBuilder))
    }
    

    Invoking this method has no side effect. It just returns a NoArgTest whose apply method invokes apply on this OneArgTest, passing in the FixtureParam passed to toNoArgTest.

    fixture

    the FixtureParam

    returns

    an new instance of NoArgTest

  19. def toString(): String
    Definition Classes
    Function1 → AnyRef → Any
  20. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  21. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  22. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()

Inherited from TestData

Inherited from AnyRef

Inherited from Any

Ungrouped