반응형
JUnit은 Java에서 Unit(단위)별로 테스트를 도와주는 프레임워크이다.
(한 단위란 일반적으로 한 클래스를 말한다.)
TDD (테스트 주도 개발)의 익스트림 프로그래밍(eXtream Programming, XP)에 사용되는 기능이며
구현과 동시에 테스트 코드르 작성함으로 고객이 원하는 소프트웨어를 빠른 시간 내에 (약 2주)
프로토타입으로 전달하며 수시로 발생하는 요구사항에 민첩하게 대처할 수 있게 한다.
*참조 : 나무위키 "TDD"
xUnit는 다른 여러 언어도 지원한다.
CUnit | C | http://cunit.sourceforge.net/ |
CppUnit | C++ | https://sourceforge.net/projects/cppunit/ |
PHPUnit | PHp | https://phpunit.de/ |
PyUnit | Python | http://pyunit.sourceforge.net/ |
JUnit | Java | http://junit.org/ |
1. JUnit 환경구축하기
- Maven을 통해 쉽게 추가 할 수 있다.
- pom.xml에 dependency를 추가한다.
- JUnit Source : mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
- Compile Dependencies가 있는 JUnit은 hamcrest를 같이 추가해 주어야 한다.
- pom.xml의 모습
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
2. JUnit assert관련 Method
Method내용
assertArrayEquals(a,b) | 배열 a와b가 일치함을 확인한다. |
assertEquals(a,b) | 객체 a와b의 값이 같은지 확인한다. |
assertSame(a,b) | 객체 a와b가 같은 객체임을 확인한다. |
assertTrue(a) | a가 참인지 확인한다. |
assertFalse(a) | a가 거짓인기 확인한다. |
assertNotNull(a) | a객체가 Null이 아님을 확인한다. |
- 더 많은 assert관련 내용 : http://junit.sourceforge.net/javadoc/org/junit/Assert.html
3. JUnit Function Flow
- setUp() : 테스트 대상 클래스의 실행전에 가장 먼저 setUP()을 실행한다.
- ex) 네트워크 연결, DB 연결에 활용한다.
- tearDown() : 가장 마지막에 수행되며 setUp()의 반대 개념으로 생각하면 된다.
- ex) 네트워크 연결 종료, DB 연결을 종료하는데 활용한다.
- setUp()과 tearDown()은 Test Case를 진행할때마다 반복적으로 실행된다.
- ex) setUp() -> TestA() -> tearDown() -> setUp() -> TestB() -> tearDown()
4. JUnit Annotation
- @Test : 해당 Method는 Test대상 메소드임을 의미한다.
public class Example {
@Test
public void method() {
org.junit.Assert.assertTrue( new ArrayList().isEmpty() );
}
}
- @BeforeClass : 해당 테스트가 시작 전에 딱 한 번씩만 수행되도록 지정한다.
public class Example { @BeforeClass public static void onlyOnce() { ... } @Test public void one() { ... } @Test public void two() { ... } }
public class Example {
@BeforeClass public static void onlyOnce() {
...
}
@Test public void one() {
...
}
@Test public void two() {
...
}
}
- @AfterClass : 해당 테스트가 끝나고 딱 한 번씩만 수행되도록 지정한다.
public class Example {
DatabaseConnection database;
@BeforeClass public static void login() {
database= ...;
}
@Test public void something() {
...
}
@Test public void somethingElse() {
...
}
@AfterClass public static void logout() {
database.logout();
}
}
- @Before : 해당 테스트가 진행이 시작되기 전에 작업할 내용을 호출한다.
public class Example {
List empty;
@Before public void initialize() {
empty= new ArrayList();
}
@Test public void size() {
...
}
@Test public void remove() {
...
}
}
- @After : 해당 테스트가 진행이 끝난 후에 작업할 내용을 호출한다.
public class Example {
File output;
@Before public void createOutputFile() {
output= new File(...);
}
@Test public void something() {
...
}
@After public void deleteOutputFile() {
output.delete();
}
}
- @Ignore : TestCase를 무시할 수 있다.
@Ignore
public class IgnoreMe {
@Test public void test1() { ... }
@Test public void test2() { ... }
}
- Flow
출처 : nesoy.github.io/articles/2017-02/JUnit
Reference
반응형
'메모' 카테고리의 다른 글
[ vscode ] Workspace에서 필요없는 폴더/파일 숨기기 (0) | 2021.01.22 |
---|---|
인텔리제이 스프링 프로젝트 생성 (0) | 2021.01.16 |
css 애니메이션 하나 까보기 (0) | 2021.01.06 |
vscode 에 draw.io 연동 (0) | 2021.01.02 |
[ 윈도우 10 ] 파일, 폴더 삭제 및 이동시 새로고침 해야 적용되는 경우 (0) | 2020.11.28 |