Inflearn Community Q&A
Assertions와 같이 동일한 이름이 있는 겨우
Written on
·
392
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;
javaspring-bootspringMVC
Answer 2
0
euiyang20000368
Questioner
질문이 좀 정확하지 않았던 것 같아서 다시 질문 드립니다.
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가 사용 불가 합니다. 이렇게 되는 이유나 해결 방법이 궁금합니다.
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
감사합니다.






아래와 같이 서로 다른 패키지 경로에서 동일한 클래스를 import하는 경우 아래와 같이 import 오류가 발생한다고 보시면 되며,
또한 assertThat과 assertThrows는 동일한 메서드명이 아니여서 자바 컴파일러가 명확한 패키지를 구분할 수 있어 오류 static import에서 문제가 발생한 것이 아닙니다.