spring(boot)/junit
[junit]save후 findById로 찾을때 못찾을 경우
수학소년
2022. 12. 11. 00:32
문제
책보면서 Repository 테스트 작성 중.
@DataJpaTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class ...RepositoryTest {
@Autowired
private ...Repository ...Repository;
@BeforeAll
public void setup() {
Problem problem = new Problem();
problem.setProblemNo(101L);
problem.setQuestion("question101");
problem.setAnswer("answer101");
problem.setSolution("solution101");
problem.setVariables("variables101");
problem.setDelYn("N");
...Repository.save(problem);
}
@Test
public void findById() {
Optional<Problem> oProblem = ...Repository.findById(101L);
//Problem problem = oProblem.get();
//Assertions.assertEquals("question101", problem.getQuestion());
Assertions.assertTrue(oProblem.isEmpty());
}
}
problemNo=101로 save했으니까 101로 찾으려고 했는데 자꾸 isEmpty()가 true가 나옴.
콘솔 확인
로그에서 정상적으로 insert된건지 봤는데 잘 된듯함.
Hibernate:
insert
into
tablename
(problem_no, created_at, updated_at, del_yn, answer, question, solution, variables)
values
(default, ?, ?, ?, ?, ?, ?, ?)
test DB설정문제?
설정문젠가 싶었음. h2연결이 안되고 다른DB에 연결됐나? 이거도 잘 된듯함..
...
Starting embedded database: url='jdbc:h2:mem:670a70df-e8a9-40ba-ae76-5c7abf9b2760;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
...
그러다..
insert로그를 보던 중...default? problem_no에 default? 101로 저장했는데?
Problem vo를 다시 살펴봤음. PK인 problemNo는 auto_increment로 했지.
...
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long problemNo; /*문제번호*/
...
그럼 101로 저장했었어도 'default'로 insert됐으니 1로 insert 됐겠네?
다시 1로 찾아봄
찾았다.
mongoDB할때
mongoDB는 auto_increment가 없으니까 save할때 PK를 직접 지정했었음.
101로 save했으면 101로 찾아짐.