작성
·
346
0
//실행 되는 부분
import static org.assertj.core.api.Assertions.*;
import static 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(~~);
와 같은 형식으로 사용했는데,
위의 코드와 같이 선언 했을 경우, 아래 사진과 같이 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에서 문제가 발생한 것이 아닙니다.