답변 데이터 150개 생성 오류
@Transactional
@Test
void test() {
Integer id = 357;
Question question = this.questionService.getQuestion(id);
SiteUser user = this.userService.getUser("test3");
for (int i = 1; i <= 150; i++) {
String content = String.format("답변테스트 답변데이터입니다:[%03d]", i);
this.answerService.create(question, content, user);
}
}
junit 테스트 코드는 이렇구요,
getQuestion()메소드 코드는
//id 값으로 Question 데이터를 조회하는 getQuestion 메서드
public Question getQuestion(Integer id) {
Optional<Question> question = this.questionRepository.findById(id);
if (question.isPresent()) {//Question 객체는 Optional 객체이기 때문에 위와 같이 isPresent 메서드로 해당 데이터가 존재하는지 검사하는 로직이 필요
return question.get();
} else {//만약 id 값에 해당하는 Question 데이터가 없을 경우에는 DataNotFoundException을 발생
throw new DataNotFoundException("question not found");
}
}
getUser()메소드 코드는
public SiteUser getUser(String username) {
Optional<SiteUser> siteuser = this.userRepository.findByusername(username);
if(siteuser.isPresent()) {
return siteuser.get();
}else {
throw new DataNotFoundException("siteuser not found");
}
}
answerService의 create 메소드는
public Answer create(Question question, String content,SiteUser author) {
Answer answer = new Answer();
answer.setContent(content);
answer.setCreateDate(LocalDateTime.now());
answer.setQuestion(question);
answer.setAuthor(author);
this.answerRepository.save(answer);
return answer;
//컨트롤러에서 답변이 등록된 위치로 이동하기 위해서는 답변 객체가 반드시 필요(앵커태그 사용 용도)
}
이렇게 메소드로 구성되있고 junit 테스트로 답변데이터 160개를 생성하려고 하니 오류가 걸립니다.
(question id를 357로 지정 해놨는데 h2데이터베이스에도 357에 해당하는 question 데이터 확실히 존재하는거 확인했습니다.)
오류명 : java.lang.NullPointerException: Cannot invoke "com.mysite.sbb.question.QuestionSerice.getQuestion(java.lang.Integer)" because "this.questionServivce" is null
이렇게나오네요..(questionService는 임포트 된상태이며, 생성자까지 추가한 상태입니다.)
buzz781 님 354
M 2022년 12월 21일 10:44 오전
작성하신 테스트코드 전체를 보여주세요.
-
박응용님,
2022년 12월 21일 10:30 오전
추천
,
대댓글
@박응용님
package com.mysite.sbb;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.List;
import java.util.Optional;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import com.mysite.sbb.answer.Answer;
import com.mysite.sbb.answer.AnswerRepository;
import com.mysite.sbb.answer.AnswerService;
import com.mysite.sbb.question.Question;
import com.mysite.sbb.question.QuestionRepository;
import com.mysite.sbb.question.QuestionService;
import com.mysite.sbb.user.UserService;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import com.mysite.sbb.user.SiteUser;
import com.mysite.sbb.user.UserRepository;
@SpringBootTest
class SbbApplicationTests {
@Autowired
private QuestionRepository questionRepository;
private UserService userService;
private UserRepository userRepository;
private AnswerService answerService;
private AnswerRepository answerRepository;
private QuestionService questionService;
// @Test
// void testJpa() {
// for (int i = 1; i <= 300; i++) {
// String subject = String.format("테스트 데이터입니다:[%03d]", i);
// String content = "내용무";
// this.questionService.create(subject, content,null);
// }
// }
// @Transactional
// @Test
//// void checkAuthor() {
//// SiteUser user = this.userService.getUser("test3");
////
//// System.out.println(user);
//// Question q = new Question();
//// q= this.questionService.create("수정테스트", "수정1", user);
//// questionRepository.save(q);
//// assertEquals("종윤입니다", q.getAuthor());
//
//
//
// }
// @Test
// void test() {
// List<Answer> all = this.answerRepository.findAll();
// System.out.println("저의 사이즈는 ="+all.size());
//
// }
@Transactional
@Test
void test() {
Optional<Question> question = this.questionRepository.findById(357);//357확실히잇음
Optional<SiteUser> user = this.userRepository.findByusername("test3");
for (int i = 1; i <= 150; i++) {
String content = String.format("답변테스트 답변데이터입니다:[%03d]", i);
this.answerService.create(question.get(), content, user.get());
}
}
// @Test
// void test() {
// Optional<Question> question = this.questionRepository.findById(357);
// System.out.println("저는 id357입니다=>"+question.get().getSubject());
//
// }
}
넵
-
buzz781님,
2022년 12월 21일 10:45 오전
추천
,
대댓글
@buzz781님 @Autowired는 각 변수마다 설정되어야 합니다. 지금은 한개만 되어 있네요.
-
박응용님,
2022년 12월 21일 10:53 오전
추천
,
대댓글
@박응용님 해결됐습니다, 정말감사합니다!
-
buzz781님,
2022년 12월 22일 12:59 오전
추천
,
대댓글