Specs2 is a Scala library for writing acceptance and unit tests. It uses a domain specific language (DSL) approach based on behavior-driven development (BDD). Specs2 specifications are structured, immutable, and control dependencies. Unit specs extend Specification and are mutable, while acceptance specs extend Specification and are functional. Specs2 provides matchers, mock objects, and forms to make assertions in tests. Tests can be run with JUnit or from SBT with different output formats.