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

yeon님의 프로필 이미지
yeon

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 리포지토리 테스트 케이스 작성

findByName() 테스트 오류

해결된 질문

작성

·

420

1

@Test

public void findbyName() {

Member member1= new Member();

member1.setName("spring1");

repository.save(member1);

Member member2= new Member();

member1.setName("spring2");

repository.save(member2);

Member res = repository.findByName("spring1").get();

assertThat(res).isEqualTo(member1);

}

코드에 이상이 있는 것 같지는 않은데... java.lang.NullPointerException이 뜨네요ㅠㅠ 다른 테스트들은 잘 돌아갑니다. 

MemoryMemberRepository.java 일부

@Override

public Optional<Member> findByName(String name) {

return store.values().stream()

.filter(member -> member.getName().equals(name))

.findAny();

}

답변 3

2

yeon님의 프로필 이미지
yeon
질문자

오늘 다시 보니 테스트 코드에서 setName을 member1에서만 2번 했네요^^; spring2라는 이름만 가지고 있는데 spring1을 검색해서 에러가 난 것 같습니다. 질문 받아주셔서 감사합니다

0

yeon님의 프로필 이미지
yeon
질문자

예상으로는 람다식 사용할 때 오류가 난 것 같고 

java.lang.NullPointerException

at test.hellospring.repository.MemoryMemberRepository.lambda$0(MemoryMemberRepository.java:31)

at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:176)

at java.base/java.util.HashMap$ValueSpliterator.tryAdvance(HashMap.java:1696)

at java.base/java.util.stream.ReferencePipeline.forEachWithCancel(ReferencePipeline.java:127)

at java.base/java.util.stream.AbstractPipeline.copyIntoWithCancel(AbstractPipeline.java:502)

at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:488)

at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)

at java.base/java.util.stream.FindOps$FindOp.evaluateSequential(FindOps.java:150)

at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)

at java.base/java.util.stream.ReferencePipeline.findAny(ReferencePipeline.java:548)

...

해당 코드의 전문입니다

public class MemoryMemberRepository implements MemberRepository{

private static Map<Long,Member> store = new HashMap<>();

private static long sequence = 0L;

@Override

public Optional<Member> findByName(String name) {

return store.values().stream()

.filter(member -> member.getName().equals(name))

.findAny(); // 하나라도 찾기

}

public void clearStore() {

store.clear();

}

}

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. ᄇᄅᄃ 님

어떤 부분에서 NullPointerException이 발생했는지 정확한 지점을 말씀해주세요.

그리고 해당 부분의 전체 코드도 올려주세요^^

yeon님의 프로필 이미지
yeon

작성한 질문수

질문하기