org.scalatest.Informer.scala Maven / Gradle / Ivy
Show all versions of scalatest_2.11.0-M3 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 a string and
* an optional payload object of type Any
.
* The Informer
will forward the passed message
string to the
* Reporter
as the message
parameter, and the optional
* payload object as the payload
parameter, of an InfoProvided
event.
*
*
*
* Here's an example of using an Informer
:
*
*
*
* import org.scalatest._
*
* class ExampleSuite 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 ExampleSuite).execute()
* ExampleSuite:
* - testAddition(Reporter)
* + Addition seems to work
*
*
*
* Traits FunSuite
, FunSpec
, 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 {
// TODO: Make sure all the informer implementations check for null
/**
* Provide information and optionally, a payload, to the Reporter
via an
* InfoProvided
event.
*
* @param message a string that will be forwarded to the wrapped Reporter
* via an InfoProvided
event.
* @param payload an optional object which will be forwarded to the wrapped Reporter
* as a payload via an InfoProvided
event.
*
* @throws NullPointerException if message
or payload
reference is null
*/
def apply(message: String, payload: Option[Any] = None): Unit
/**
* Provide information and additional payload to the Reporter
as the .
*
* @param message an object whose toString
result will be forwarded to the wrapped Reporter
* via an InfoProvided
event.
* @param payload an object which will be forwarded to the wrapped Reporter
* via an InfoProvided
event.
*
* @throws NullPointerException if message
reference is null
*/
//def apply(message: String, payload: Any): Unit
}