JUnit

oyeon·2021년 1월 15일
1
  • Directory 구조

실습

// CalculatorService.java
package org.edwith.webbe.calculatorcli;

public class CalculatorService {
	 public int plus(int value1, int value2) {
	        return value1 + value2;
	    }

	    public int minus(int value1, int value2) {
	        return value1 - value2;
	    }

	    public int multiple(int value1, int value2) {
	        return value1 * value2;
	    }

	    public int divide(int value1, int value2) throws ArithmeticException {
	        return value1 / value2;
	    }
}
// CalculatorServiceTest.java
package org.edwith.webbe.calculatorcli;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class CalculatorServiceTest {
	CalculatorService calculatorService;
	
	@Before
	public void init() {
		this.calculatorService = new CalculatorService();
	}
	
	@Test
	public void plus() throws Exception{
		// given
		int value1 = 10;
		int value2 = 5;
		
		// when
		int result = calculatorService.plus(value1, value2);
		
		// then
		Assert.assertEquals(15, result);	// 결과와 15가 같을 경우에만 성공
	}
	
	@Test
	public void divide() throws Exception{
		// given
		int value1 = 10;
		int value2 = 5;
		
		// when
		int result = calculatorService.divide(value1, value2);
		
		// then
		Assert.assertEquals(2, result);	// 결과와 2가 같을 경우에만 성공
	}
	
	@Test
	public void divideExceptionTest() throws Exception{
		// given
		int value1 = 10;
		int value2 = 0;
		
		try {
			calculatorService.divide(value1, value2);
		}catch(ArithmeticException ae) {
			Assert.assertTrue(true);	// 이 부분이 실행되었다면 성공
			return;	// 메서드를 더 이상 실행하지 않음
		}
		Assert.fail();	// 이 부분이 실행되면 무조건 실패
	}
}
<!-- pom.xml -->
...
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <source>11</source>
          <target>11</target>
          <encoding>utf-8</encoding>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

실행 방법

Class 혹은 Method 우클릭 후 Run As -> JUnit Test
Class 선택시 메서드 전체에 대해 검사
Method 선택시 해당 메서드에 대해서만 검사

결과 - 성공

결과 - 실패

  • Assert.assertEquals(2, result); -> Assert.assertEquals(3, result); 변경

JUnit 주요 어노테이션

어노테이션 이름설명
@BeforeClass테스트 클래스가 실행되기 전에 딱 한번 실행된다.
@AfterClass테스트 클래스의 모든 테스트 메서드가 실행이 끝나고 딱 한번 실행된다.
@Before테스트 메서드가 실행되기 전에 실행된다. 테스트 메서드가 5개 있는 테스트 클래스를 실행하면 @Before가 붙은 메서드는 5번 실행된다.
@After테스트 메서드가 실행된 후에 실행된다. 테스트 메서드가 5개 있는 테스트 클래스를 실행하면 @After가 붙은 메서드는 5번 실행된다.
@Test@Test 어노테이션이 붙은 테스트 메서드

JUnit 주요 assert 메서드

  • assertEquals(x, y)
  • assertArrayEquals(a, b)
  • assertFalse(x)
  • assertTrue(x)
  • assertTrue(message, condition)
  • assertNull(o)
  • assertNotNull(o)
  • assertSame(ox, oy)
  • assertNotSame(ox, oy)

reference
https://www.boostcourse.org/web326/lecture/58975/
https://www.boostcourse.org/web326/lecture/58976/

profile
Enjoy to study

0개의 댓글