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

dkdldrha님의 프로필 이미지
dkdldrha

작성한 질문수

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

JPA와 DB 설정, 동작확인

test중 NullPointerException에러발생

작성

·

442

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

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

image

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

 

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

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

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

 

감사합니다.

0

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

안녕하세요. dkdldrha님

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

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

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

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

https://bit.ly/3fX6ygx

 

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

 

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

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

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

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

0

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

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

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

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

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

MemberRepositoryTest 에러 질문

감사합니다.

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

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

dkdldrha님의 프로필 이미지
dkdldrha

작성한 질문수

질문하기