JUnit

2020. 3. 30. 22:31Java/Test

JUnit이란

JUnit의 개념

JUnit이란 Java의 대표적인 Unit Test 도구입니다. Testing 결과를 단순히 문서로 남기는 것이 아니라 Test Class를 그대로 남김으로써 나중에 개발자에게 테스트 방법 및 클래스의 History를 그대로 넘겨줄 수 있습니다.

JUnit의 특징

  • Unit Test Framework 중 하나
  • 단정문으로 테스트 케이스의 수행 결과를 판별
  • Annotation으로 간결하게 사용 가능
  • @Test 메서드가 호출할 때마다 새로운 인스턴스를 생성하여 독립적인 테스트가 이루어짐

Junit의 대표적인 판별 메소드들

Method

내용

assertArrayEquals(a,b)

배열 ab가 일치함을 확인

assertEquals(a, b)

객체 ab의 값이 같음을 확인

assertSame(a,b)

객체 ab가 같은 객체임을 확인

assertTrue(a)

aTrue인지 확인

assertFalse(a)

aFalse인지 확인

assertNotNull(a)

aNull이 아님을 확인

Junit Function Flow

  • setUp(): 테스트 대상 클래스의 실행 전에 가장 먼저 setUp을 실행
  • teardown(): 가장 마지막에 수행되며 setup()의 반대 개념
  • setup()과 teardown()은 Test Case를 진행할 때마다 반복적으로 실행됨

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() {
      ...
   }
}

@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
Test Case를 무시할 수 있음

@Ignore
public class IgnoreMe {
  @Test public void test1() { ... }
  @Test public void test2() { ... }
}
728x90

'Java > Test' 카테고리의 다른 글

Junit5  (0) 2020.04.01
Mockito  (0) 2020.04.01