ScalaTest User Guide

Getting started

Selecting testing styles

Defining base classes

Writing your first test

Using assertions

Tagging your tests

Running your tests

Sharing fixtures

Sharing tests

Using matchers

Testing with mock objects

Property-based testing

Asynchronous testing

Using Scala-js

Using Inside

Using OptionValues

Using EitherValues

Using PartialFunctionValues

Using PrivateMethodTester

Using WrapWith

Philosophy and design

Migrating to 3.0

Using WrapWith

You can use ScalaTest's WrapWith annotation to associate a wrapper suite with a non-Suite class, so it can be run via ScalaTest. The WrapWith annotation is similar in spirit to JUnit's RunWith annotation.

A class will be considered annotated with WrapWith if it is annotated directly or one of its superclasses (but not supertraits) are annotated with WrapWith. The wrapper suite must have a public, one-arg constructor that takes a Class instance whose type parameter is compatible with the class to wrap: i.e., the class being annotated with WrapWith. ScalaTest will load the class to wrap and construct a new instance of the wrapper suite, passing in the Class instance for the class to wrap. Here's an example:

@WrapWith(classOf[Specs1Runner])
class LegacySpec extends Specification {
  // ...
}

The Specs1Runner would need to have a public, no-arg constructor that accepts subclasses of Specification:

class Specs1Runner(clazz: Class[_ <: Specification]) {
  // ...
}

Next, we'll discuss ScalaTest's philosophy and design.

ScalaTest is brought to you by Bill Venners and Artima.
ScalaTest is free, open-source software released under the Apache 2.0 license.

If your company loves ScalaTest, please consider sponsoring the project.

Copyright © 2009-2024 Artima, Inc. All Rights Reserved.

artima