테스트 코드/JUnit

[junit] junit 사용하기

Wings of Freedom 2020. 9. 7. 12:58

junit을 java에서 사용하기 위해서는 2가지 라이브러리가 필요하다.

junit.jar와 hamcrest-core.jar가 필요하다. 다운은 https://github.com/junit-team/junit/wiki/Download-and-Install 여기서 받을 수 있고, junit 공식 사이트는 http://junit.org/


junit 사용법을 설명하기 전에 Printer 예제를 만들어보았다. 


Printer 예제는 git소스를 참고하고 설명은 하지 않겠다. 사실 junit 사용법만 익히기 위해서 Printer 예제는 볼 필요없다. 아래 설명한 어노테이션만 잘 숙지하면 된다.

아래는 Printer를 테스트하는 테스트 코드이다.

  • @Before : @Test 메소드가 있는 클래스는 @Test 메소드가 실행 될 때마다 객체가 생성되고 실행된다. 쉽게 말해서 @Test 메소드가 2개라면 2번 실행하기 위해 객체 생성을 2번한다는 말이다. @Before 메소드는 @Test 메소드가 실행되기 전에 반드시 실행되게한다. @Test 메소드가 마다 공통으로 사용하는 데이터를 @Before 메소드에서 실행하는 것인데, 여기서 공통으로 사용하는 데이터를 fixture라고 한다.
  • @BeforeClass : @Before에서 설명 했듯이 @Test 메소드 실행 할 때마다 객체를 생성한다고 설명했는데, 이때 생성되는 객체가 최초에 한번만 실행되는 어노테이션이다.
  • @After : @Test 메소드가 실행된 후 실행된다. 
  • @AfterClass : 객체가 최초 한번 생성 된 후 실행된다.
  • @Test : @Test 메소드는 테스트를 수행하는 메소드다. 아래 예제에 expected가 붙은 @Test가 있는데 이는 예외 상황을 테스트 하기 위한 기능이다.
  • @Ignore : 테스트를 실행하지 않게 한다. @Test가 붙어 있지만, @Ignore가 붙어 있는 메소드라면 테스트 대상 메소드가 아니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package net.woniper.se.junit.test;
 
import net.woniper.se.junit.BlackPrint;
import net.woniper.se.junit.NotSupportImagePrint;
import net.woniper.se.junit.Printer;
import org.junit.*;
 
public class PrintTest {
 
    Printer printer;
 
    @Before
    public void setUp() throws Exception {
        System.out.println("setUp");
        printer = new Printer();
    }
 
    @BeforeClass
    public static void beforeClass() {
        System.out.println("beforeClass");
    }
 
    @Test
    public void testColorPrint() throws Exception {
        printer.btnPrint();
        Assert.assertEquals("COLOR", printer.getKind());
    }
 
    @Test
    public void testBlackPrint() throws Exception {
        printer.setPrint(new BlackPrint());
        Assert.assertEquals("BLACK", printer.getKind());
    }
 
    @Test
    @Ignore
    public void testIgnore() throws Exception {
        System.out.println("testIgnore");
    }
 
    @Test(expected = NotSupportImagePrint.class)
    public void testImagePrint() throws Exception {
        printer.setPrint(new BlackPrint());
        printer.imagePrint();
    }
 
    @After
    public void after() {
        System.out.println("after");
        printer.off();
    }
 
    @AfterClass
    public static void afterClass() {
        System.out.println("afterClass");
    }
}


출처 : https://blog.woniper.net/271?category=531455