org.scalatest.Informer.scala Maven / Gradle / Ivy
Show all versions of scalatest_2.8.0 Show documentation
/*
* Copyright 2001-2008 Artima, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.scalatest
/**
* Trait to which custom information about a running suite of tests can be reported.
*
*
* An Informer is essentially
* used to wrap a Reporter and provide easy ways to send custom information
* to that Reporter via an InfoProvided event.
* Informer contains an apply method that takes an object.
* The Informer will invoke toString on the passed object and
* forward the resulting string to the Reporter as the message
* parameter of an InfoProvided event.
*
*
*
* Here's an example of using an Informer in a Suite
* subclass:
*
*
*
* import org.scalatest._
*
* class MySuite extends Suite {
* def testAddition(info: Informer) {
* assert(1 + 1 === 2)
* info("Addition seems to work")
* }
* }
*
*
* If you run this Suite from the interpreter, you will see the message
* included in the printed report:
*
*
* scala> (new MySuite).execute()
* Test Starting - MySuite.testAddition(Reporter)
* Info Provided - MySuite.testAddition(Reporter): Addition seems to work
* Test Succeeded - MySuite.testAddition(Reporter)
*
*
*
* Traits FunSuite, Spec, FlatSpec, WordSpec, FeatureSpec, and
* their sister traits in org.scalatest.fixture package declare an implicit info method that returns
* an Informer. This implicit info is used, for example, to enable the syntax offered by the
* GivenWhenThen trait, which contains methods that take an implicit Informer.
* Here's an example of a FeatureSpec that mixes in GivenWhenThen:
*
*
*
* import org.scalatest.FeatureSpec
* import org.scalatest.GivenWhenThen
*
* class ArithmeticSpec extends FeatureSpec with GivenWhenThen {
*
* feature("Integer arithmetic") {
*
* scenario("addition") {
*
* given("two integers")
* val x = 2
* val y = 3
*
* when("they are added")
* val sum = x + y
*
* then("the result is the sum of the two numbers")
* assert(sum === 5)
* }
*
* scenario("subtraction") {
*
* given("two integers")
* val x = 7
* val y = 2
*
* when("one is subtracted from the other")
* val diff = x - y
*
* then("the result is the difference of the two numbers")
* assert(diff === 5)
* }
* }
* }
*
*
*
* Were you to run this FeatureSpec in the interpreter, you would see the following messages
* included in the printed report:
*
*
*
* scala> (new ArithmeticFeatureSpec).run()
* Feature: Integer arithmetic
* Scenario: addition
* Given two integers
* When they are added
* Then the result is the sum of the two numbers
* Scenario: subtraction
* Given two integers
* When one is subtracted from the other
* Then the result is the difference of the two numbers
*
*
* @author Bill Venners
*/
trait Informer {
/**
* Provide information to the Reporter as the .
*
* @param message an object whose toString result will be forwarded to the wrapped Reporter
* via an InfoProvided event.
*
* @throws NullPointerException if message reference is null
*/
def apply(message: String): Unit
}