{{위키데이터 속성 추적}}
{{소프트웨어 정보
| name                   = JUnit
| logo                   = JUnit 5 Banner.png
| screenshot             =
| caption                =
| developer              = [[켄트 벡]], [[Erich Gamma]], David Saff, Kris Vasudevan
| latest release version = 5.9.1
| latest release date = {{시작 날짜와 나이|2022|09|20}}<ref name="github">{{웹 인용|url=https://github.com/junit-team/junit5/releases|website=github.com|title=JUnit Releases |access-date=2022-09-22}}</ref>
| operating system       = [[크로스 플랫폼]]
| programming language   = [[자바 (프로그래밍 언어)|자바]]
| genre                  = [[유닛 테스트]] 도구
| license                = [[이클립스 공용 허가서]]<ref>{{웹 인용| url=https://github.com/junit-team/junit/commit/3171c4b29cb207e71fc2f752f0fbcb235bc8e784 | title=Relicense JUnit from CPL to EPL | publisher=Philippe Marschall | date=18 May 2013 | accessdate=20 September 2013}}</ref> ([[:en:Software relicensing|relicensed]] from CPL before)
| website                = {{URL|http://junit.org}}
}}

'''JUnit'''(제이유닛)은 [[자바 (프로그래밍 언어)|자바 프로그래밍 언어]]용 [[유닛 테스트]] [[소프트웨어 프레임워크|프레임워크]]이다. JUnit은 [[테스트 주도 개발]] 면에서 중요하며 [[SUnit]]과 함께 시작된 [[XUnit]]이라는 이름의 [[유닛 테스트]] 프레임워크 계열의 하나이다.

JUnit은 컴파일 타임에 [[JAR (파일 포맷)|JAR]]로서 링크된다. 프레임워크는 JUnit 3.8 이하의 경우 <code>junit.framework</code> 패키지 밑에 상주하며, JUnit 4 이상의 경우 <code>org.junit</code> 패키지 밑에 상주한다.

깃허브에 호스팅된 10,000개 자바 프로젝트를 대상으로 한 2013년 수행된 연구 조사에 따르면 JUnit([[SLF4J|slf4j-api]]과 연결된)은 가장 흔히 포함시킨 외부 라이브러리였다. 각 라이브러리는 프로젝트 가운데 30.7%에 사용되었다.<ref>{{웹 인용 |url=http://www.takipiblog.com/2013/11/20/we-analyzed-30000-github-projects-here-are-the-top-100-libraries-in-java-js-and-ruby/ |title=We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby |확인날짜=2019-04-17 |archive-date=2014-07-09 |archive-url=https://web.archive.org/web/20140709221250/http://www.takipiblog.com/2013/11/20/we-analyzed-30000-github-projects-here-are-the-top-100-libraries-in-java-js-and-ruby/ |url-status= }}</ref>

== JUnit 테스트 픽스처 예시 ==
JUnit 테스트 픽스처(test fixture)는 자바 객체이다. 구 버전의 JUnit의 경우 픽스처는 <code>junit.framework.TestCase</code>로부터 상속해야 했으나 JUnit 4의 새 테스트는 이렇게 하지 않는다.<ref name="JUnitCookbook">{{웹 인용
| url=http://junit.sourceforge.net/doc/cookbook/cookbook.htm
| title=JUnit Cookbook
| publisher=junit.sourceforge.net
| author=[[:en:Kent Beck]], [[:en:Erich Gamma]]
| accessdate=2011-05-21
| archive-date=2020-06-15
| archive-url=https://web.archive.org/web/20200615030913/http://junit.sourceforge.net/doc/cookbook/cookbook.htm
| url-status=
}}</ref> 테스트 메소드는 <code>@Test</code> [[자바 어노테이션|어노테이션]]을 통해 어노테이트해야 한다. 필요한 경우,<ref>{{웹 인용
| url=http://c2.com/cgi/wiki?ExpensiveSetUpSmell
| title=Expensive Setup Smell
| publisher=C2 Wiki
| author=[[:en:Kent Beck]]
| accessdate=2011-11-28}}</ref>

<syntaxhighlight lang=Java>
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
    }
}
</syntaxhighlight>

== 포팅 ==
* [[액션스크립트]] ([http://www.flexunit.org/ FlexUnit])
* [[에이다 (프로그래밍 언어)|에이다]] ([http://libre.adacore.com/libre/tools/aunit/ AUnit] {{웨이백|url=http://libre.adacore.com/libre/tools/aunit/ |date=20110927135451 }})
* [[C (프로그래밍 언어)|C]] ([http://cunit.sourceforge.net/ CUnit])
* [[C 샤프|C#]] ([[NUnit]])
* [[C++]] ([[CPPUnit]], [http://cxxtest.com/ CxxTest] {{웨이백|url=http://cxxtest.com/ |date=20120205120421 }})
* [[어도비 콜드퓨전]] ([[MXUnit]])
* [[델파이]] ([[DUnit]])
* [[얼랭]] ([http://www.erlang.org/doc/apps/eunit/chapter.html EUnit])
* [[에펠 (프로그래밍 언어)|에펠]] ([https://docs.eiffel.com/book/eiffelstudio/using-autotest Auto-Test])
* [[포트란]] ([[fUnit]], [[pFUnit]])
* [[프리 파스칼]] ([http://camelos.sourceforge.net/fpcUnit.html FPCUnit])
* [[Go (프로그래밍 언어)|Golang]] ([https://github.com/jstemmer/go-junit-report Go JUnit report])
* [[하스켈]] ([http://hackage.haskell.org/package/HUnit HUnit])
* [[자바스크립트]] ([https://jasmine.github.io/ JSUnit])
* [[마이크로소프트 닷넷]] ([[NUnit]])
* [[오브젝티브-C]] ([https://web.archive.org/web/20111013123951/http://www.sente.ch/software/ocunit/ OCUnit])
* [[OCaml]] ([http://ounit.forge.ocamlcore.org OUnit])
* [[펄]] ([http://metacpan.org/module/Test::Class Test::Class], [http://metacpan.org/module/Test::Unit Test::Unit])
* [[PHP]] ([[PHPUnit]])
* [[파이썬]] ([[PyUnit]], [https://pypi.org/project/junit-xml/ junit-xml])
* [[Qt (프레임워크)|Qt]] (QTestLib)
* [[R (프로그래밍 언어)|R]] ([http://RUnit.sourceforge.net/ RUnit])
* [[루비 (프로그래밍 언어)|루비]] ([https://github.com/sj26/rspec_junit_formatter JUnit for Rspec])

== 같이 보기 ==
* [[TestNG]]
* [[모의 객체]]
* [[Mockito]], [[PowerMock]]
* [http://www.junit-tools.org/ JUnit-Tools]
* [[EvoSuite]]
* [https://github.com/Nordstrom/JUnit-Foundation JUnit Foundation]

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{공식 웹사이트}}
* [http://www.ibm.com/developerworks/java/library/j-junit4/ An early look at JUnit 4]
* [http://www.methodsandtools.com/tools/tools.php?junit JUnit Presentation]
* [https://web.archive.org/web/20150128114403/http://memorynotfound.com/category/testing/junit/ JUnit Tutorials]

[[분류:크로스 플랫폼 소프트웨어]]
[[분류:익스트림 프로그래밍]]
[[분류:자바로 작성된 자유 소프트웨어]]
[[분류:자바 개발 도구]]
[[분류:자바 플랫폼]]
[[분류:이클립스 라이선스 소프트웨어]]
[[분류:유닛 테스트 프레임워크]]