XUnit

Summary

xUnit is a label used for an automated testing software framework that shares significant structure and functionality with SUnit; designed by Kent Beck in 1998.

The SUnit framework was ported to Java by Kent Beck and Erich Gamma as JUnit which gained wide popularity. Adaptations to other languages were also popular which led some to claim that the structured, object-oriented style works well with popular languages including Java and C#.

The name of an adaptation is often a variation of "SUnit" with the "S" replaced with an abbreviation of the target language name. For example, JUnit for Java and RUnit for R. Collectively, the term "xUnit" is used to refer to any such adaptation where "x" is a placeholder for the language-specific prefix.

The xUnit frameworks are often used for unit testing; testing an isolated unit of code, but can be used for any level of software testing including integration and system.

Architecture edit

An xUnit framework has the following general architecture.[1]

Test case edit

A test case is the smallest part of a test that generally encodes a simple path through the software under test. The test case code prepares input data and environmental state, invokes the software under test and verifies expected results.

A programmer writes the code for each test case.

Assertions edit

A test case is implemented with one or more assertions that validate expected results.

Generally, the framework provides assertion functionality. A framework may provide a way to use custom assertions.

Test suite edit

A test case is a collection of related test cases. They share a framework which allows for reuse of environment setup and cleanup code.

Generally, a test runner may run the cases of a suite in any order so the programmer should not depend on top-to-bottom execution order.

Test fixture edit

A test fixture (also known as a test context) provides the environment for each test case of a suite. Generally, a fixture is configured to setup a known, good, runtime environment before tests run, and to cleanup the environment after.

The fixture is configured with one or more functions that setup and cleanup state. The test runner runs each setup function before each case and runs each cleanup function after.

Test runner edit

A test runner is a program that runs tests and reports results.[2] The program is often part of a framework.

A test runner may produce results in various formats. Often, a common and default format is human-readable, plain-text. Additionally, the runner may produce structured output. Some xUnit adaptations (i.e. JUnit) can output XML that can be used by a continuous integration system such as Jenkins and Atlassian Bamboo.

Implementations edit

See list of unit testing frameworks

See also edit

References edit

  1. ^ Beck, Kent. "Simple Smalltalk Testing: With Patterns". Archived from the original on 15 March 2015. Retrieved 25 June 2015.
  2. ^ Meszaros, Gerard (2007) xUnit Test Patterns, Pearson Education, Inc./Addison Wesley

External links edit

  • Jeffries, Ron (Nov 19, 2004). "List of various unit testing frameworks". Archived from the original on Aug 19, 2005.
  • Meszaros, Gerard (2007). "xUnit Test Patterns: Refactoring Test Code". p. 833. ISBN 9780131495050.
  • Fowler, Martin (Jan 17, 2006). "xUnit". Testing.
  • "Open Source Dependency Injection for xUnit". Testing.