JUnit

JUnit
Developer(s) Kent Beck, Erich Gamma, David Saff, Kris Vasudevan (University of Calgary)
Stable release
5.2.0[1] / October 3, 2017 (2017-10-03)
Repository Edit this at Wikidata
Written in Java
Operating system Cross-platform
Type Unit testing tool
License Eclipse Public License[2] (relicensed from CPL before)
Website junit.org

JUnit is a unit testing framework for the Java programming language. JUnit has been important in the development of test-driven development, and is one of a family of unit testing frameworks which is collectively known as xUnit that originated with SUnit.

JUnit is linked as a JAR at compile-time; the framework resides under package junit.framework for JUnit 3.8 and earlier, and under package org.junit for JUnit 4 and later.

A research survey performed in 2013 across 10,000 Java projects hosted on GitHub found that JUnit, (in a tie with slf4j-api), was the most commonly included external library. Each library was used by 30.7% of projects. [3]

Example of JUnit test fixture

A JUnit test fixture is a Java object. With older versions of JUnit, fixtures had to inherit from junit.framework.TestCase, but the new tests using JUnit 4 should not do this.[4] Test methods must be annotated by the @Test annotation. If the situation requires it,[5] it is also possible to define a method to execute before (or after) each (or all) of the test methods with the @Before (or @After) and @BeforeClass (or @AfterClass) annotations.[4]

import org.junit.*;

public class FoobarTest {
    @BeforeClass
    public static void setUpClass() throws Exception {
        // Code executed before the first test method
    }

    @Before
    public void setUp() throws Exception {
        // Code executed before each test
    }
 
    @Test
    public void testOneThing() {
        // Code that tests one thing
    }

    @Test
    public void testAnotherThing() {
        // Code that tests another thing
    }

    @Test
    public void testSomethingElse() {
        // Code that tests something else
    }

    @After
    public void tearDown() throws Exception {
        // Code executed after each test 
    }
 
    @AfterClass
    public static void tearDownClass() throws Exception {
        // Code executed after the last test method 
    }
}

Ports

JUnit alternatives have been written in other languages including:

See also

  • TestNG, another test framework for Java
  • Mock object, a technique used during unit testing
  • Mockito and PowerMock, mocking extensions to JUnit
  • JUnit-Tools, a set of tools to optimize the creation and maintainability of junit-tests (www.junit-tools.org)
  • EvoSuite, a tool to automatically generate JUnit tests
  • JUnit Foundation, a set of extensions including event notifications, timeout management, automatic retry, and artifact capture.

References

  1. JUnit Releases
  2. "Relicense JUnit from CPL to EPL". Philippe Marschall. 18 May 2013. Retrieved 20 September 2013.
  3. "We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby".
  4. 1 2 Kent Beck, Erich Gamma. "JUnit Cookbook". junit.sourceforge.net. Retrieved 2011-05-21.
  5. Kent Beck. "Expensive Setup Smell". C2 Wiki. Retrieved 2011-11-28.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.