
org.junit.jupiter.api라는 걸 찾을 수 없다는 뜻이다.
이건 우리가 테스트를 하기 위해 쓰는 “JUnit”이라는 도구를 사용하는데, 이 도구를 컴퓨터가 어디 있는지 모르기 때문이다
JUnit이라는 책을 가져오기:
• 우리가 책을 읽으려면 책장에 책이 있어야 하잖아요? 지금은 책장(JUnit 라이브러리)이 없어서 에러가 난 거예요.
• 책장을 추가하려면 JUnit이라는 책이 어디 있는지 알려줘야 해요.
설정 파일에 추가하기:
• 프로그램에서 책장을 추가하려면 설정 파일에 한 줄을 적어야 해요.
• Gradle을 쓰는 경우라면, build.gradle 파일에 아래 코드를 추가한다.
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'}
하지만,이미 이 코드는 있다.
프로젝트 업데이트하기:
• 위 내용을 추가하고 나서, IDE(예: IntelliJ)를 업데이트해야 한다.
• IntelliJ에서 오른쪽 위에 있는 Maven 또는 Gradle 버튼을 눌러서 새로 고침(Refresh)하면 된다.
에러 해결 확인:
• 이제 다시 실행해보면, 컴퓨터가 JUnit을 어디서 찾을지 알게 돼서 에러가 사라질 것이다.
Gradle 캐시가 손상되었을 가능성이 있습니다. 아래 명령어를 터미널에서 실행해야 한다.
bash
./gradlew clean build --refresh-dependencies
IDE에서 Gradle과 프로젝트가 제대로 동기화되지 않았을 가능성이 있다.
1. Gradle 빌드 도구 확인:
• IntelliJ 메뉴에서 File > Settings > Build, Execution, Deployment > Build Tools > Gradle로 이동한다.
• Build and run using 및 Run tests using이 모두 Gradle로 설정되어 있는지 확인한다.
2. JDK 확인:
• File > Project Structure > SDKs에서 프로젝트 SDK가 Java 17로 설정되었는지 확인한다.
• Gradle JVM도 Java 17이어야 한다.
3. Gradle 동기화:
• IntelliJ 오른쪽 Gradle 탭에서 새로고침 아이콘(🔄)을 클릭한다.
Gradle 파일에 필요한 JUnit과 AssertJ 종속성을 명확히 추가했는지 확인하세요. 다음을 build.gradle에 추가한다.
gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.10.3'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.10.3'
testImplementation 'org.assertj:assertj-core:3.24.2'
}
JUnit과 AssertJ가 제대로 인식되지 않는 경우,
@Test 및 @DisplayName 어노테이션을 테스트하기 위해 아래 단순 테스트 코드를 작성 해 봐야한다. :
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class SimpleTest {
@Test
void simpleTest() {
int a = 10;
int b = 20;
assertThat(a + b).isEqualTo(30);
}
}
package hello.core.beanfind;
import hello.core.AppConfig;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import static org.assertj.core.api.Assertions.assertThat;
public class ApplicationContextInfoTest {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
@Test
@DisplayName("모든 빈 출력하기")
void findAllBean() {
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name=" + beanDefinitionName + " object=" + bean);
}
}
@Test
@DisplayName("애플리케이션 빈 출력하기")
void findApplicationBean() {
String[] beanDefinitionNames = ac.getBeanDefinitionNames();
for (String beanDefinitionName : beanDefinitionNames) {
BeanDefinition beanDefinition = ac.getBeanDefinition(beanDefinitionName);
//Role ROLE_APPLICATION : 직접 등록한 애플리케이션 빈
//Role ROLE_INFRASTRUCTURE : 스프링이 내부에서 사용하는 빈
if (beanDefinition.getRole() == BeanDefinition.ROLE_APPLICATION) {
Object bean = ac.getBean(beanDefinitionName);
System.out.println("name=" + beanDefinitionName + " object=" + bean);
}
}
}
}
테스트 코드는 src/test/java 디렉토리 아래에 있어야 합니다. 현재 테스트 파일이 src/main/java 아래에 있는 것처럼 보입니다.
해결 방법:
1. ApplicationContextInfoTest 파일을 src/test/java/hello/core/beanfind/로 이동한다.
2. 파일을 이동한 후 Gradle 프로젝트를 새로고침한다.