작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
139
0
안녕하세요. 개발자님
24분쯤에 MemberServiceTest에서
MemberService memberService;
@BeforeEach
public void beforeEach() {
}
이런식으로 작성하시는 것을 봤습니다.
근데 저는 한번 연습해볼겸 이걸 하기전에
클래스 시작 부분에 AppConfig appConfig
= new AppConfig();
appConfig.memberService()로 이전의 방식과 같이
만들어보려고 시도했는데, appConfig.이 찍히지 않고
오류가 뜨더라구요. 이유가 뭔지 알 수 있을까요?
답변 2
1
안녕하세요 유진이님.
OrderApp
자바에 클래스에는 총 3가지 구성요소가 존재합니다
class {
필드 영역
생성자 영역
메서드 영역
}
필드 영역에서는 (클래스, 인스턴스)변수를 선언 혹은 초기화 하는 영역으로
class {
int age;
static String name="홍길동"
List<Member> memebers = new ArrayList<>();
}
와 같이 값은 동작만이 가능하며 메서드를 통한 값 할당이 불가능합니다.
OrderApp에서의 선언과 호출은 main"함수" 안에서 일어난 일이고 beforeEach 또한 결국 메서드 이기 때문에 메서드 반환 값을 통한 할당이 된 것입니다.
AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();
아래와 같이 위 형식이 아니어도 상관 없습니다.
MemberService memberService;
AppConfig appConfig = new AppConfig();
@BeforeEach
public void beforeEach() {
memberService = appConfig.memberService();
}
0
안녕하세요 유진이님.
이 부분을 얘기하신게 맞는지요?
class MemberServiceTest {
MemberService memberService;
AppConfig appConfig = new AppConfig();
appConfig.
그럼 이렇게 바꿔보시겠어요??
아래 링크를 참고하시어 "필드의 초기화" 를 학습하시는 걸 추천드립니다.
감사합니다.
제가 여쭤본 것은 orderApp에서는 아래 구문이 되는데,
MemberServiceTest에는
이후로 작동이 안합니다.
위와 같이 뜹니다.
방금 appConfig.이 아니라 두줄 자체를 복사해 넣어서 확인해봤는데
에러는 안뜨네요;; 기이합니다.
즉, orderService에서는 위에 두줄이 가능한데 왜 MemberServiceTest에는 저게 안되는지,
또 다른 방식인 위와 같이 구현을 한건지 궁금합니다. (beforeEach가 테스트 시행전에 각각
하기 위해 한다는건 알고 있는데
이형식이 아닌 이유있는지 궁금합니다.