JUnit 프레임워크 연결

Java 코드를 테스트하기 위해 JUnit 이라는 훌륭한 프레임워크가 있습니다 . 그것은 훌륭하게 작동하고 지속적으로 업데이트되며 매우 인기가 있으며 물론 Intellij IDEA는 매우 긴밀하게 통합되어 있습니다.

이제 모든 사람들이 이 프레임워크의 다섯 번째 버전인 JUnit 5를 사용하고 있지만 많은 프로젝트에서 여전히 네 번째 버전을 찾을 수 있습니다. 많이 다르지는 않지만 최신 버전을 살펴보겠습니다. 테스트 작성을 적극적으로 시작할 때쯤이면 내 선택을 승인하게 될 것입니다.

그렇다면 프로젝트에 JUnit을 추가하는 방법은 무엇입니까? Maven을 배운 후에는 쉽습니다. 다음 코드를 pom.xml에 추가하기만 하면 됩니다.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
	<version>5.8.1</version>
	<scope>test</scope>
</dependency>

그건 그렇고, Maven이 빌드 단계( test stage )에서 테스트를 실행하도록 하려면 pom.xml에 조각을 하나 더 추가해야 합니다.

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
	<version>2.19.1</version>
	<dependencies>
    	<dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-surefire-provider</artifactId>
            <version>1.3.2</version>
    	</dependency>
	</dependencies>
</plugin>

@테스트 주석

테스트하려는 클래스가 있다고 가정해 보겠습니다. 가장 좋은 방법은 무엇입니까? 추상 클래스를 테스트하기가 어렵기 때문에 몇 가지 예부터 시작하겠습니다. :)

덧셈, 뺄셈, 곱셈 및 나눗셈의 4가지 기본 연산을 수행할 수 있는 Calculator 클래스가 있다고 가정합니다 . 작성해 봅시다:

class Calculator {
    	public int add(int a, int b) {
        	return a+b;
    	}

    	public int sub(int a, int b) {
        	return a-b;
    	}

    	public int mul (int a, int b) {
        	return a*b;
    	}

    	public int div(int a, int b) {
        	return a/b;
    	}
}

이 클래스의 메서드를 테스트하려고 합니다. 당신은 미래에 그들이 무언가를 바꾸고 모든 것이 작동을 멈출 것이라는 것을 결코 알지 못합니다. 어떻게 테스트를 작성할 수 있습니까?

다른 클래스를 만들어야 합니다. 이를 위해 일반적으로 동일한 이름을 사용하고 테스트 접미사를 추가합니다 . 각 방법에 대해 하나 이상의 테스트 방법을 추가해야 합니다. 예:

class CalculatorTest {
   	@Test
    	public void add() {
    	}
   	@Test
    	public void sub() {
        }
   	@Test
    	public void mul() {
    	}
   	@Test
    	public void div() {
    	}
}

메서드 이름이 test 라는 단어로 시작해야 한다는 요구 사항이 있었지만 더 이상 필요하지 않습니다.

JUnit 테스트 예제

CalculatorTest 클래스 의 메서드를 테스트할 몇 가지 예를 작성해 보겠습니다 .

class CalculatorTest {
   	@Test
    	public void add() {
        	Calculator calc = new Calculator();
        	int result = calc.add(2, 3);
        	assertEquals(5, result);
    	}

   	@Test
    	public void sub() {
        	Calculator calc = new Calculator();
        	int result = calc.sub(10, 10);
        	assertEquals(0, result);
        }

   	@Test
    	public void mul() {
        	Calculator calc = new Calculator();
        	int result = calc.mul(-5, -3);
        	assertEquals(15, result);
    	}

   	@Test
    	public void div() {
        	Calculator calc = new Calculator();
        	int result = calc.div(2, 3);
        	assertEquals(0, result);
    	}
}

이것이 일반적인 JUnit 테스트의 모습입니다. 흥미로운 점은 특수 메서드 assertEquals()가 여기에 사용된다는 점입니다. 이 메서드는 전달된 매개변수를 비교하며 이름에 equals라는 단어가 표시됩니다.

assertEquals() 에 전달된 매개변수가 같지 않으면 메서드에서 예외가 발생하고 테스트가 실패합니다. 이 예외는 다른 테스트 실행을 방해하지 않습니다.