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
'[전공] 학교 전공 공부 > [학교] 소프트웨어 공학' 카테고리의 다른 글
Ch10. 확실성 있는 시스템 (0) | 2022.06.07 |
---|---|
Ch09. 소프트웨어 진화 (0) | 2022.06.07 |
Ch08. 소프트웨어 테스팅 (0) | 2022.04.14 |
Ch07. 설계와 구현 (0) | 2022.04.14 |
Ch06. 아키텍처 설계 (0) | 2022.04.14 |