Wikipedia

JUnit

Also found in: Acronyms.
JUnit
Developer(s)Kent Beck, Erich Gamma, David Saff, Kris Vasudevan
Stable release
5.7.1 / February 4, 2021 (2021-02-04)[1]
Repository Edit this at Wikidata
Written inJava
Operating systemCross-platform
TypeUnit testing tool
LicenseEclipse Public License 2.0[2] (relicensed previously)
Websitejunit.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 latest version of the framework, JUnit 5, resides under package org.junit.jupiter. Previous versions JUnit 4 and JUnit 3 were under packages org.junit and junit.framework, respectively.

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. Test methods must be annotated by the @Test annotation. If the situation requires it,[4] it is also possible to define a method to execute before (or after) each (or all) of the test methods with the @BeforeEach (or @AfterEach) and @BeforeAll (or @AfterAll) annotations.[5]

import org.junit.jupiter.api.*; public class FoobarTest { @BeforeAll public static void setUpClass throws Exception { // Code executed before the first test method } @BeforeEach public void setUp throws Exception { // Code executed before each test } @Test public void oneThing { // Code that tests one thing } @Test public void anotherThing { // Code that tests another thing } @Test public void somethingElse { // Code that tests something else } @AfterEach public void tearDown throws Exception { // Code executed after each test  } @AfterAll public static void tearDownClass throws Exception { // Code executed after the last test method  } } 

Previous versions of JUnit

As a side effect of its wide use, previous versions of JUnit remain popular, with JUnit 4 having over a 100,000 usages by other software components on the Maven central repository.[6]

In JUnit 4, the annotations for test execution callbacks were @BeforeClass, @Before, @After, and @AfterClass, as opposed to JUnit 5's @BeforeAll, @BeforeEach, @AfterEach, and @AfterAll.[5]

In JUnit 3, test fixtures had to inherit from junit.framework.TestCase.[7] Also, test methods had to be prefixed with 'test'.[8]

See also

  • TestNG, another test framework for Java
  • Mock object, a technique used during unit testing
  • Mockito, a mocking library to assist in writing tests
  • EvoSuite, a tool to automatically generate JUnit tests
  • List of Java Frameworks

References

  1. ^ "JUnit Releases". github.com. Retrieved 2021-02-04.
  2. ^ "Change license to EPL v2.0". github.com. 7 September 2017. Retrieved 2021-02-04.
  3. ^ "We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby".
  4. ^ Kent Beck. "Expensive Setup Smell". C2 Wiki. Retrieved 2011-11-28.
  5. ^ a b "Writing Tests". junit.org. Retrieved 2021-02-04.
  6. ^ "JUnit". mvnrepository.com. Retrieved 2021-02-04.
  7. ^ Kent Beck; Erich Gamma. "JUnit Cookbook". junit.sourceforge.net. Retrieved 2011-05-21.
  8. ^ Charles A. Sharp (August 2007). "Migrating from JUnit 3 to JUnit 4: Nothing But Good News". Object Computing, Inc. Retrieved 2021-02-04.

External links

This article is copied from an article on Wikipedia® - the free encyclopedia created and edited by its online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of Wikipedia® encyclopedia articles provide accurate and timely information, please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.

Copyright © 2003-2025 Farlex, Inc Disclaimer
All content on this website, including dictionary, thesaurus, literature, geography, and other reference data is for informational purposes only. This information should not be considered complete, up to date, and is not intended to be used in place of a visit, consultation, or advice of a legal, medical, or any other professional.