JUnit
Developer(s) | Kent Beck, Erich Gamma, David Saff, Mike Clark (University of Calgary) |
---|---|
Stable release | 4.12[1] / December 4, 2014 |
Written in | Java |
Operating system | Cross-platform |
Type | Unit testing tool |
License | Eclipse Public License[2] |
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 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 GitHub projects found that JUnit, along with slf4j-api, are the most popular libraries. 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 TestFoobar { @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:
- Actionscript (FlexUnit)
- Ada (AUnit)
- C (CUnit)
- C# (NUnit)
- C++ (CPPUnit)
- Coldfusion (MXUnit)
- Erlang (EUnit)
- Eiffel (Auto-Test) - JUnit inspired getest (from Gobosoft), which led to Auto-Test in Eiffel Studio.
- Fortran (fUnit, pFUnit)
- Delphi (DUnit)
- Free Pascal (FPCUnit)
- Haskell (HUnit)
- JavaScript (JSUnit)
- Microsoft .NET (NUnit)
- Objective-C (OCUnit)
- OCaml (OUnit)
- Perl (Test::Class and Test::Unit)
- PHP (PHPUnit)
- Python (PyUnit)
- Qt (QTestLib)
- R (RUnit)
- Ruby (Test::Unit)
See also
- TestNG, another test framework for Java
- Mock object, a technique used during unit testing
- Mockito and PowerMock, mocking extensions to JUnit
References
- ↑ JUnit Releases
- ↑ "Relicense JUnit from CPL to EPL". Philippe Marschall. 18 May 2013. Retrieved 20 September 2013.
- ↑ "We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby".
- ↑ 4.0 4.1 Kent Beck, Erich Gamma. "JUnit Cookbook". junit.sourceforge.net. Retrieved 2011-05-21.
- ↑ Kent Beck. "Expensive Setup Smell". C2 Wiki. Retrieved 2011-11-28.