어플리케이션 테스트의 contextLoads에서 오류가 발생했습니다.
제목으로 적은 오류도 있었지만, 프로필 설정 자체에 오류도 있었습니다.
오류가 있는 application.yml 입니다.
spring:
profile:
group:
local: "common,local-db"
prod1: common, prod-db, prod1-server
prod2: common, prod-db, prod2-server
prod3: common, prod-db, prod3-server
jwt:
secret: ~
jasypt:
encryptor:
bean: ~
cloud:
aws:
s3:
bucket: ~
credentials:
access-key: ~
secret-key: ~
region:
static: ap-northeast-2
auto: false
stack:
auto: false
serverName: local
---
spring:
config:
activate:
on-profile: common
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
application:
name: ~
---
spring:
config:
activate:
on-profile: local-db
datasource:
url: ~
username: ~
password: ~
# driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: update
properties:
hibernate:
format_sql: true
show_sql: true
dbInfo: h2
---
spring:
config:
activate:
on-profile: prod-db
datasource:
url: ~~
username: ~~
password: ~~
# driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show_sql: true
dbInfo: rds
---
spring:
config:
activate:
on-profile: prod1-server
serverName: ~
server:
port: 8080
---
spring:
config:
activate:
on-profile: prod2-server
serverName: ~
server:
port: 8081
---
spring:
config:
activate:
on-profile: prod3-server
serverName: ~~~
server:
port: 8080
---
spring:
config:
activate:
on-profile: ~~~
serverName: ~~~
server:
port: 8081
---
이렇게 되어있었고, local로 실행한 뒤에 dbInfo를 요청하면 h2가 나오는게 아니라 rds가 나왔습니다.
즉, 프로필 설정 자체에 원인이 있었고, 그 때문에 contextLoad 테스트에서 application.yml을 읽지 못한다고 생각했습니다.
spring:
profiles: <<< profile이 아니라 profiles이다.
active: local << 또, 혹시 몰라서 default로 local 설정
group:
local: common, local-db
prod1: common, prod-db, prod1-server
prod2: common, prod-db, prod2-server
prod3: common, prod-db, prod3-server
jwt:
secret: ~
jasypt:
spring.profile이 아니라 spring.profiles 였습니다.
그리고 수정하고 확인해보니, 로그에서도 문제를 찾을 수 있었습니다.
수정 전 프로필 로그입니다.
2023-07-30 12:22:55.965 INFO 61736 Application : The following profiles are active: "local"
정확하진 않은데 local하나만 프로필이 적용됐습니다. 하지만 오류를 수정하니까 로그도 바뀌었습니다.
2023-07-30 12:22:55.965 INFO 61736 --- [main] Application : The following 3 profiles are active: "local", "common", "local-db"
그룹으로 묶었던 프로필 모두가 적용되는걸 확인하실 수 있습니다.
결론적으로, 제목의 원인은 application.yml의 어떤 오류로 인해 인식할 수 없는 문제로 발생하는 것 입니다.
https://yjh5369.tistory.com/entry/Spring-boot-profile-%ED%99%98%EA%B2%BD%EB%B3%84%EB%A1%9C-%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95yaml
https://stackoverflow.com/questions/49474241/integration-test-could-not-open-servletcontext-resource-application-propertie
잘 읽었습니다. 좋은 정보 감사드립니다.