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

작성자 없음

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

스프링 핵심 원리 - 기본편

새로운 구조와 할인 정책 적용

@BeforeEach가 작동이 안 됩니다.

작성

·

325

1

MemberApp/OrderApp으로 확인해 보았을 땐 문제가 없는데, Test에서 실행을 해보면 memberService.join(member)부분에서 NULL Pointer Exception이 뜹니다ㅠㅠ 어떻게 해결해야 할까요 

모든 코드는 다 예제랑 똑같이 작성했습니다.

답변 2

0

삭제된 글입니다

memberService가 정상적으로 생성되는지 확인하기 위해 AppConfig 클래스도 첨부해주세요:)

0

안녕하세요. asdf asdf님, 공식 서포터즈 David입니다.

테스트 코드도 함께 올려주세요:)

감사합니다.

package hello.core.order;

import hello.core.AppConfig;
import hello.core.member.Grade;
import hello.core.member.Member;
import hello.core.member.MemberService;
import org.assertj.core.api.Assertions;
import org.junit.Test;
import org.junit.jupiter.api.BeforeEach;

public class OrderServiceTest {

MemberService memberService;
OrderService orderService;

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

@Test
public void createOrder(){
long memberId=1L;
Member member = new Member(memberId,"memberA", Grade.VIP);
memberService.join(member);

Order order = orderService.createOrder(memberId,"itemA",10000);
Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
}
}

이걸 실행하면 @beforeEach 가 실행이 안 되어서 NPE가 뜨는 것 같습니다...

memberService가 정상적으로 생성되는지 확인이 필요하네요, AppConfig 클래스 코드도 부탁드려요:)

해결 했습니다!

import org.junit.Test를

import org.junit.jupiter.api.Test 로 

변경했더니 @BeforeEach가 동작 되는데,

혹시 왜 그런지 알 수 있을까요?

Junit4가 아니라 Junit5를 사용중이셨나보네요.

junit.jupiter~ 패키지는 Junit5이고

junit.Test 패키지는 Junit4입니다.

작성자 없음

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

질문하기