Java를 위한 test-driven 개발을 위한 단위테스트
프레임워크로 JAR와 연결된다. SUnit기반의 xUnit을 비롯한 중요한 테스팅 프레임워크다.
JAR? 메타데이터와 리소스(텍스트, 이미지 등)를 묶은 Java 클래스를 배포하기 위한 파일 포맷, 하나의 패키지
프로그래밍 과정에서는 작성한 코드를 통합하기 전에, 각 모듈이 잘 작동하는지 모듈 단위로 우선 테스트하여 효율적으로 코드를 관리할 수 있다. 이때, 단위 테스트(unit test)를 통해서 여러 테스트 케이스(Test case)를 코드나 알고리즘에 적용해 검토할 수 있다. 또한, 잘 작동하는 개발한 프로그램이 예외(exception)없이 잘 작동하는지 검증할 수 있다.
IntelliJ에서는 Maven, Gradle, IntelliJ builder를 통해서 JUnit 환경을 구축할 수 있다.
프로젝트 생성
Dependencies(libraries) 추가
+
> From Maven > org.junit.jupiter:junit-jupiter:5.9.0.
Tip
IntelliJ-builder를 활용하는 방법을 활용하였다. 근데 막상 예시 주소를 넣으면 검색이 안된다. 그래서 'junit'이라고만 검색해보거나 혹은 'org.junit.jupiter:junit-jupiter:5.'정도만 검색하면 많은 리스트다 뜬다. 예시랑 가장 비슷한 것을 골라서 설치했다.
이제 윈도우창 왼쪽에 보면 External Libraries에 junit.jupiter가 생긴 것을 알 수 있다.
이렇게해서 폴더를 다 만들고 나면, 코드를 작성해야 한다.
우선 main 두고, Caluator 클래스를 만들어 사용할 예정이다. Caculator 코드를 작성하고 나면, CaculatorTest를 자동생성한 후, 안에 테스트용 코드를 채운다.
특정 클래스를 단위테스트 하기 위한 테스트 코드를 생성하기 위해 타겟 코드에서 오른쪽마우스 Go To>Test>Create New Test>Member(test method)선택
(예제는 Calculator.java 의 CalculatorTest생성, add 메서드 선택)
CalculaotrTest.java가 생성되고, assertAll()과, assertEquals()를 사용해
테스트 케이스를 넣는다.
public class Main {
//https://ildann.tistory.com/5
public static void main(String[] args) {
Calcluator calculator= new Calcluator();
System.out.println(calculator.add(1,2 ));
}
}
public class Calcluator {
public int add(int a, int b){
return (a+b);
}
}
import org.junit.jupiter.api.Test; //자동생성
import static org.junit.jupiter.api.Assertions.*; //자동생성
class CalcluatorTest {
@Test
void add() {
Calcluator calculator = new Calcluator();
//assertEquals(calculator.add(2,3),5);
assertAll(() -> assertEquals(calculator.add(2, 2), 4),
() -> assertEquals(calculator.add(2, -2), 0),
() -> assertEquals(calculator.add(-2, -2), -4),
() -> assertEquals(calculator.add(1, 0), 1));
}
}
Assertions은 Java 테스트를 위한 가정(assumtions)을 테스트할 수 있게하는 것
(자료 : Oracle, An assertion is a statement in the Java programming language that enables you to test your assumptions about your program)
이제 Run(ctr+shit+F10)으로 실행해보면 결과가 나온다.
[1] https://www.jetbrains.com/help/idea/junit.html
[2] https://www.wikipedia.kr