인프런 커뮤니티 질문&답변

정의양님의 프로필 이미지
정의양

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 테스트

Assertions와 같이 동일한 이름이 있는 겨우

작성

·

346

0


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)

[질문 내용]
아래 실행 되는 부분과 같이 동일한 이름을 사용하는 경우 반드시 static을 넣어서 사용해야 하나요?
실행 안되는 부분처럼 사용할 순 없나요?
//실행 되는 부분
import static
org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;

//안되는 부분
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Assertions;

답변 2

0

정의양님의 프로필 이미지
정의양
질문자

질문이 좀 정확하지 않았던 것 같아서 다시 질문 드립니다.

import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;

위와 같이 선언할 경우 core.api.Assertions의 메소드인 assertThat, jupiter.api.Assertions의 assertThrow를 정적 멤버 호출을 통해

assertThat(~~);

assertThrow(~~);

와 같은 형식으로 사용했는데,

 

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Assertions;

위의 코드와 같이 선언 했을 경우, 아래 사진과 같이 core.api만 import 되어서 

Assertions.assertThat만 사용이 가능하고 jupiter.api.Assertions는 import되지 않아서 Assertions.assertThrow가 사용 불가 합니다. 이렇게 되는 이유나 해결 방법이 궁금합니다.

아래와 같이 서로 다른 패키지 경로에서 동일한 클래스를 import하는 경우 아래와 같이 import 오류가 발생한다고 보시면 되며,

또한 assertThat과 assertThrows는 동일한 메서드명이 아니여서 자바 컴파일러가 명확한 패키지를 구분할 수 있어 오류 static import에서 문제가 발생한 것이 아닙니다.

0

안녕하세요. 정의양님, 공식 서포터즈 OMG입니다.

네, 정적 멤버호출 코드 사용을 없애려면 static import를 반드시 사용해야합니다.

아래 설명을 참고해주세요

https://velog.io/@kasania/Java-Static-import%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B4%80%EC%B0%B0


감사합니다.

 

 

 

정의양님의 프로필 이미지
정의양

작성한 질문수

질문하기