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

dkdldrha님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA와 DB 설정, 동작확인

test중 NullPointerException에러발생

23.12.22 20:39 작성

·

405

0

jpa와 db설정, 동작확인 강의를 듣고 클론코딩 중

test중 NullPointerException에러발생

main

jpabook.jpashop.Member

package jpabook.jpashop;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter @Setter
public class Member {

    @Id @GeneratedValue
    private Long id;
    private String username;
}

jpabook.jpashop.MemberRepository

package jpabook.jpashop;

import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.stereotype.Repository;

@Repository
public class MemberRepository {

    @PersistenceContext
    EntityManager em;

    public Long save(Member member) {
        em.persist(member);
        return member.getId();
    }

    public Member find(Long id) {
        return em.find(Member.class, id);
    }
}

 

 

test

jpabook.jpashop.MemberRepositoryTest

package jpabook.jpashop;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.Rollback;
import org.springframework.transaction.annotation.Transactional;

import static org.assertj.core.api.Assertions.assertThat;
public class MemberRepositoryTest {
    @Autowired
    MemberRepository memberRepository;


    @Test
    @Transactional
    @Rollback(false)
    public void testMember() {
        Member member = new Member();
        member.setUsername("memberA");

        Long saveId = memberRepository.save(member);
        Member findMember = memberRepository.find(saveId);

        assertThat(findMember.getId()).isEqualTo(member.getId());
        assertThat(findMember.getUsername()).isEqualTo(member.getUsername());

    }
}

 

application.yml

spring:
  datasource:
  url: jdbc:h2:tcp://localhost/~/jpashop
  username: sa
  password:
  driver-class-name: org.h2.Driver

  jpa:
    hibernate:
      ddl-auto: create
    properties:
      hibernate:
        # show_sql: true
        format_sql: true
logging.level:
  org.hibernate.SQL: debug
  org.hibernate.type: trace 

 

build.gradle

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.2.1'
	id 'io.spring.dependency-management' version '1.1.4'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'

java {
	sourceCompatibility = '17'
}

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-validation'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.springframework.boot:spring-boot-devtools'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'com.h2database:h2'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
	useJUnitPlatform()
}

build, run 모두 intellj IDE로 하는중입니다.

답변 3

0

OMG님의 프로필 이미지

2023. 12. 22. 21:57

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

image

코드를 직접 실행해봐야 정확히 알 것 같지만, 올리신 코드를 봤을 때 application.yml의 띄어쓰기가 강의와 다른 부분이 확인되네요^^

 

url, username, password, driver-class-name을

두칸 씩 띄어쓰기해서 확인해보시겠어요?

해결이 안될 경우 영한님 답변을 참고하여 댓글 남겨주세요 😀

 

감사합니다.

0

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

2023. 12. 22. 21:56

안녕하세요. dkdldrha님

AI 인턴이 아직 더 발전해야겠네요 ㅎㅎ

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

2023. 12. 22. 20:41

안녕하세요, 인프런 AI 인턴입니다.

질문하신 내용과 유사한 문제를 겪고 계신 다른 수강생의 질문과 강사님의 답변이 있는 게시글을 찾았습니다. NullPointerException 오류의 경우, 보통 빈(Bean)이 제대로 주입되지 않았을 때 발생할 수 있습니다.

수강생님이 제시한 코드를 바탕으로 테스트 중 발생하는 NullPointerException 오류를 해결하기 위한 정보를 아래 게시글에서 확인하실 수 있습니다.

  • 게시글 제목: MemberRepositoryTest 에러 질문

수강생님의 상황과 유사한 문제를 다루고 있으니, 링크를 통해 답변 내용을 확인해 보시기 바랍니다.

MemberRepositoryTest 에러 질문

감사합니다.

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

2023. 12. 22. 20:43

저랑 에러가 다른데요 ..ㅠ

dkdldrha님의 프로필 이미지

작성한 질문수

질문하기