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.

Developer(s)Kent Beck, Erich Gamma, David Saff, Kris Vasudevan
Stable release
5.5.1 / July 20, 2019 (2019-07-20)[1]
Written inJava
Operating systemCross-platform
TypeUnit testing tool
LicenseEclipse Public License[2] (relicensed from CPL before)

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 {
    public static void setUpClass() throws Exception {
        // Code executed before the first test method

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

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

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

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


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 mocking extension to JUnit
  • EvoSuite, a tool to automatically generate JUnit tests


  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. 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.