Developer(s) | Kent Beck, Erich Gamma, David Saff, Kris Vasudevan |
---|---|
Stable release | 5.7.1 / February 4, 2021[1] |
Repository | ![]() |
Written in | Java |
Operating system | Cross-platform |
Type | Unit testing tool |
License | Eclipse Public License 2.0[2] (relicensed previously) |
Website | junit |
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
- ^ "JUnit Releases". github.com. Retrieved 2021-02-04.
- ^ "Change license to EPL v2.0". github.com. 7 September 2017. Retrieved 2021-02-04.
- ^ "We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby".
- ^ Kent Beck. "Expensive Setup Smell". C2 Wiki. Retrieved 2011-11-28.
- ^ a b "Writing Tests". junit.org. Retrieved 2021-02-04.
- ^ "JUnit". mvnrepository.com. Retrieved 2021-02-04.
- ^ Kent Beck; Erich Gamma. "JUnit Cookbook". junit.sourceforge.net. Retrieved 2011-05-21.
- ^ Charles A. Sharp (August 2007). "Migrating from JUnit 3 to JUnit 4: Nothing But Good News". Object Computing, Inc. Retrieved 2021-02-04.