인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 핵심 원리 - 기본편

관심사의 분리

24분쯤에 MemberServiceTest에서 질문있습니다.

작성

·

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.


그럼 이렇게 바꿔보시겠어요??

아래 링크를 참고하시어 "필드의 초기화" 를 학습하시는 걸 추천드립니다.

감사합니다.

https://gbsb.tistory.com/190

제가 여쭤본 것은 orderApp에서는 아래 구문이 되는데,

AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();

MemberServiceTest에는 

AppConfig appConfig = new AppConfig();
appConfig.

이후로 작동이 안합니다.

위와 같이 뜹니다. 

방금 appConfig.이 아니라 두줄 자체를 복사해 넣어서 확인해봤는데

AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();

에러는 안뜨네요;; 기이합니다. 

즉, orderService에서는 위에 두줄이 가능한데 왜 MemberServiceTest에는 저게 안되는지,

MemberService memberService;

@BeforeEach
public void beforeEach() {
AppConfig appConfig = new AppConfig();
memberService = appConfig.memberService();
}

또 다른 방식인 위와 같이 구현을 한건지 궁금합니다. (beforeEach가 테스트 시행전에 각각

하기 위해 한다는건 알고 있는데 

AppConfig appConfig = new AppConfig();
MemberService memberService = appConfig.memberService();

이형식이 아닌 이유있는지 궁금합니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기