ZinnaChoi / Study-Management

온라인 스터디 관리 시스템: 부재 일정 캘린더, 토론 게시판 및 알림 기능 제공
8 stars 0 forks source link

[Fix Request] MemberControllerTest 버그 수정 요청 #43

Closed ZinnaChoi closed 7 months ago

ZinnaChoi commented 8 months ago

안녕하세요 @MeMyself-And-I ! DB를 ddl-auto: create로 설정한 뒤, 전체 test를 실행시켰을 때, 다음과 같이 일부 테스트에서 에러가 발생합니다! image

그리고 sql setup 파일 만들 때 member_id, schedule_id 등을 숫자로 지정하게 되면, 언젠가 duplicate 에러가 발생할 수 있으니, jdbcTemplate을 사용해서 어떠한 상황에서 실행하더라도 테스트가 정상 동작하도록 바꾸는게 좋아 보입니다! 또는 Insert (select~~) 를 통해 해결 할 수도 있고요!

원인 파악 후 해결 부탁 드립니다 아래는 그 중 joinSuccess 메서드에서 발생한 오류 메세지 전문 첨부합니다

org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement #7 of class path resource [member/MemberSetup.sql]: INSERT INTO study.member_schedule (member_id, created_at, schedule_id, updated_at) VALUES(999, '111111111111111', 999, '111111111111111')
 at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript([ScriptUtils.java:282](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.populate([ResourceDatabasePopulator.java:254](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.jdbc.datasource.init.DatabasePopulatorUtils.execute([DatabasePopulatorUtils.java:54](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.jdbc.datasource.init.ResourceDatabasePopulator.execute([ResourceDatabasePopulator.java:269](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.lambda$executeSqlScripts$9([SqlScriptsTestExecutionListener.java:362](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.transaction.support.TransactionOperations.lambda$executeWithoutResult$0([TransactionOperations.java:68](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.transaction.support.TransactionTemplate.execute([TransactionTemplate.java:140](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.transaction.support.TransactionOperations.executeWithoutResult([TransactionOperations.java:67](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts([SqlScriptsTestExecutionListener.java:362](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.lambda$executeSqlScripts$4([SqlScriptsTestExecutionListener.java:275](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at java.base/java.lang.Iterable.forEach([Iterable.java:75](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts([SqlScriptsTestExecutionListener.java:275](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.executeSqlScripts([SqlScriptsTestExecutionListener.java:219](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.jdbc.SqlScriptsTestExecutionListener.beforeTestMethod([SqlScriptsTestExecutionListener.java:165](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.TestContextManager.beforeTestMethod([TestContextManager.java:320](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at org.springframework.test.context.junit.jupiter.SpringExtension.beforeEach([SpringExtension.java:240](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at java.base/java.util.ArrayList.forEach([ArrayList.java:1511](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at java.base/java.util.ArrayList.forEach([ArrayList.java:1511](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`study`.`member_schedule`, CONSTRAINT `FK85h38v1n4lgwdt3xi0mfujew3` FOREIGN KEY (`schedule_id`) REFERENCES `schedule` (`schedule_id`))
 at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException([SQLError.java:117](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException([SQLExceptionsMapping.java:122](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at com.mysql.cj.jdbc.StatementImpl.executeInternal([StatementImpl.java:763](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at com.mysql.cj.jdbc.StatementImpl.execute([StatementImpl.java:648](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at com.zaxxer.hikari.pool.ProxyStatement.execute([ProxyStatement.java:94](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
 at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java)
 at org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript([ScriptUtils.java:261](vscode-file://vscode-app/c:/Users/yeahee/AppData/Local/Programs/Microsoft%20VS%20Code/resources/app/out/vs/code/electron-sandbox/workbench/workbench.html))
MeMyself-And-I commented 7 months ago

MemberController 테스트 코드 관련 버그 내용 중

  1. sql setup 파일 내 PK 인덱스 값 하드 코딩 제거 -> 완료
  2. ddl.auto = create 시 몇몇 테스트 코드 동작 에러 해결 -> 완료 하였습니다. 다만 2번 사항은 제가 아무리 create로 설정 후 돌려봐도 에러가 전혀 나지 않아서 main에 작업 내용 머지된 후 한번만 더 확인 부탁드립니다.

https://github.com/ZinnaChoi/Study-Management/commit/426fc61becb97cd3027fc977ea2e2dcbaba2c224