JUnit 으로 @Test 테스트 케이스 작성

728x90

@Test 인식 오류 문제 


@Test 인식 오류 문제 해결

- 에러 원인은 Java 9 이전 버전에서 module을 사용하지 않는데, module-info.java에서 module을 사용하고 있기 때문에 생긴 것.

- (1) 빌드 Path에 JUnit5 라이브러리를 추가해야 JUnit 테스트 수행 가능하다.

  (2) module-info.java 속 내용은 아래와 같이 작성해야 한다.

module JUnit_Test5 {
	requires org.junit.jupiter.api; 
}

 오류가 사라졌다. 


[JUnit 사용 준비]

 1. new -> JUnit Test Case 클릭하여 TestCase 를 생성

 2. Properties 의 Java Build Path 중 모듈 단위에서 Library Add 추가 -> JUnit5  추가한다.

 3. module-info.java 파일에 다음과 같이 추가한다.

  - 추가하지 않으면 @Test 애노테이션 인식이 안 되고 오류가 남

module JUnit_Test5 {
	requires org.junit.jupiter.api; 
}

[Test할 객체 속에 메소드 작성]

public class MyClass {
	public static int larger(int a, int b) { // 입력한 두 수 중 더 큰 수 반환 
		if (a > b)		// 1
			return a;	// 2
		else
			return b;	// 3
	}				// 4

	public static int abs(int a) { //입력한 값을 무조건 절댓값으로 반환 
		if (a >= 0)		// 1
			return a;	// 2
		else
			return -a;	// 3
	}				// 4

	public static int median(int a, int b, int c) { // 입력한 세 수 중 중앙값 반환 
		if (a <= b) {			// 1
			if (b <= c)		// 2
				return b;	// 3
			else if (a <= c)		// 4
				return c;	// 5
			else
				return a;	// 6
		}
		else {
			if (a <= c)		// 7
				return a;	// 8
			else if (b <= c)		// 9
				return c;	// 10
			else
				return b;	// 11
		}
	}					// 12

	static int binarySearch(int list[], int key) { //이진탐색 - 리스트 속 key 값 찾으면 반환 
		int low, high, middle;		// 1
		low = 0;
		high = list.length-1;

		while (low <= high) {		// 2
			middle = (low + high) / 2;	// 3
   			if (key == list[middle])	// 4
				return middle;	// 5
			else if (key > list[middle])	// 6
				high = middle + 1;	// 7
			else
				high = middle - 1;	// 8
		}
		return -1;				// 9
	}					// 10
}

 

[TestCase 메소드 단위로 @Test 모듈 작성]

  - 내부에 있는 assetEquals(), assertArrayEquals(), asserTrue(), assertFalse(), assertNull(). assertNotNull(), assertSame(), assertNotSame() 메소드들이 테스트를 수행하는 실질적인 작동을 한다. 

class MyClassOtherTest {

	@Test
	final void testLarger1() {
		assertEquals(MyClass.larger(1, 2), 2);
	}
	@Test
	public void testAbsPositive() { // 양수 넣으면 양수가 나와야
		assertEquals(MyClass.abs(1), 1);
	}
	@Test
	public void testAbsZero() { //0 넣으면 0
		assertEquals(MyClass.abs(0), 0);
	}
	@Test
	public void testAbsNegatice() { //음수 넣어도 양수 나와야 
		assertEquals(MyClass.abs(-1), 1);
	}

	@Test
	public void allSame() {
		assertEquals(MyClass.median(1, 1, 1), 1);
	}

	@Test
	public void twoSame1() {
		assertEquals(MyClass.median(1, 1, 2), 1);
	}

	@Test
	public void twoSame2() {
		assertEquals(MyClass.median(1, 2, 2), 2);
	}

	@Test
	public void notSame() {
		assertEquals(MyClass.median(1, 2, 3), 2);
	}

}

[TestCase 메소드 단위로 @Test 모듈 작성]

- TestCase 객체에서 [Run As -> JUnit Test] 수행

 - Coverage As 클릭 시 Test 수행 시에 어떤 라인을 수행했고 건너뛰었는지도 알려준다 

                      빨간 라인 = 수행 X | 초록 라인  = 수행 O  등등

728x90