Akashic Records

Introduce Junit4.0 본문

오래된글/Java

Introduce Junit4.0

Andrew's Akashic Records 2018. 4. 7. 23:47
728x90

이 글은 기존에 사용하던 JUnit 3.8.1 버전에서의 Test Case 작성과 JUnit 4.0에서의 Test Case 작성 방법을 비교 설명하여 기존에 JUnit을 사용하던 사용자 중 JUnit 4.0을 처음 접하는 사용자의 이해를 돕는데 있다.

실행 환경

- JUnit 4.0(http://prdownloads.sourceforge.net/junit/junit4.0.zip)

- JDK 5.0(http://java.sun.com/j2se/1.5.0/download.jsp)


Target Class

아래는 Test 대상 Code다.

package Junit.test;

public class Member {

private String name;

private int age;

private String address;

private String phone;

public String getAddress()

{

return address;

}

public void setAddress(String address)

{

this.address = address;

}

public int getAge()

{

return age;

}

public void setAge(int age)

{

this.age = age;

}

public String getName()

{

return name;

}

public void setName(String name)

{

this.name = name;

}

public String getPhone()

{

return phone;

}

public void setPhone(String phone)

{

this.phone = phone;

}

public String getData() {

return name+" "+age+" "+address+" "+phone;

}

}


Old JUnit Test Case

Target Class을 Test하는 JUnit 3.8.1 버전에서의 Test Case는 다음과 유사할 것이다.

1. Test Case는 “junit.framework.TestCase” 상속 받아야한다.

2. Test Method는 “test”로 시작하는 Method명을 가져야 한다.

3. assert Method을 사용하여 Validate하였다.

4. setup, teardown 메서드을 사용하여 test Method 실행 전, 후 작업을 하였다.

package Junit.test;

import junit.framework.TestCase;

public class junit381TestCase extends TestCase {

public static void main(String[] args) {

junit.textui.TestRunner.run(junit381TestCase.class);

}

protected void setUp() throws Exception {

super.setUp();

System.out.println("SetUP");

}

protected void tearDown() throws Exception {

super.tearDown();

System.out.println("TearDown");

}

public void testName() {

System.out.println("TestName");

String name = "Hurukku";

Member member = new Member();

member.setName(name);

assertEquals(name, member.getName());

}

public void testAge() {

System.out.println("TestAge");

int age = 10;

Member member = new Member();

member.setAge(age);

assertEquals(age, member.getAge());

}

}


JUnit 4.0 Test Case

아래는 JUnit 4.0으로 작성된 Test Case을 보여준다. 가장 눈에 띄는 차이점은 Annotation을 사용하게 되었다는 점이다. 얼핏 보면 전에 다루었던 TestNG Code와 유사하게 보인다.

1. Annotation을 지원한다.

2. junit.framework.TestCase”을 상속 받지 않아도 된다.

3. @Test Annotation을 사용함으로 메서드 명이 더 이상 test로 시작할 필요가 없어졌다.

4. assert Method는 static으로 import해서 사용한다.

5. 필요하면 “junit.framework.JUnit4TestAdapter” 이용하여junit.framework.TestCase”타입으로 리턴한다.

6. setUp(), teardown() Method 각각 @Before, @After Annotation으로 바꾸어서 지정할 있다. 특히 기존에는 setup(), teardown() Method 여러 만들 없었으나 Annotaion 이용함으로 다중 설정이 가능하여졌다.

package Junit.test;

import static org.junit.Assert.assertEquals;

import junit.framework.JUnit4TestAdapter;

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

public class junit40TestCase{

@Before

public void runBeforeTest() {

System.out.println("Before");

}

@Before

public void runBeforeTest2() {

System.out.println("Before2");

}

@After

public void runAfterTest() {

System.out.println("After");

}

@Test

public void name() {

System.out.println("TestName");

String name = "Hurukku";

Member member = new Member();

member.setName(name);

assertEquals(name, member.getName());

}

@Test

public void age() {

System.out.println("TestAge");

int age = 10;

Member member = new Member();

member.setAge(age);

assertEquals(age, member.getAge());

}

public static void main(String[] args) {

junit.textui.TestRunner.run(suite());

}

public static junit.framework.Test suite() {

return new JUnit4TestAdapter(junit40TestCase.class);

}

}


One-time set up and tear down

setup(), teardown() Method나 @Before, @After Annotation은 test Method가 실행 될 때 마다 호출 되게 된다. 새로운 버전에서는 test 진행시 한번만 setup, tear down이 되는 Annotation을 지원한다.

- @BeforeCalss : Test Case의 모든 실행 메서드에 앞서 한번만 호출된다.

- @AfterClass : Test Calse의 모든 실행 메서드가 종료된후 최후에 한번만 호출된다.

@BeforeClass

public static void runBeforeClass() {

System.out.println("BeforeClass");

}

@AfterClass

public static void runAfterClass() {

System.out.println("AfterClass");

}


요약

JUnit 4.0은 Annotation을 지원하는등 JDK 5.0 패러다임에 근접하게 발전한 건 사실이다. 하지만 단순히 TestNG와 비교해보면 이미 기존에 나와있던 개념을 적용했을 뿐 그 이상의 발전은 없어 보인다.


JUnit 4.0의 새로운 기능을 요약하면 다음과 같다.

1. JDK 5.0 환경에서 구동된다.

2. “junit.framework.TestCase” Class을 더 이상 상속 받을 필요없다.

3. @Test Annotation을 사용함으로 메서드 명이 더 이상 test로 시작할 필요가 없어졌다.

4. assert Method는 static으로 import해서 사용한다.

5. 필요하면 “junit.framework.JUnit4TestAdapter” 이용하여junit.framework.TestCase”타입으로 리턴할수 있다.

6. setUp(), teardown() Method 각각 @Before, @After Annotation으로 바꾸어서 지정할 있다. 특히 기존에는 setup(), teardown() Method 여러 만들 없었으나 Annotaion 이용함으로 다중 설정이 가능하여졌다.

7. One-time set up, tear down Annotation인 @BeforeClass, @AfterClass을 지원한다.


728x90

'오래된글 > Java' 카테고리의 다른 글

Jakarta Commons Logging  (0) 2018.04.07
Jakarta Common Configuration  (0) 2018.04.07
HybridJava(HJ) - Beyond the Java Server Pages  (0) 2018.04.07
Character and Byte Streams  (0) 2018.04.07
Apache OpenEJB with the TomEE  (0) 2018.04.07
Comments