springboot / vscode 에서 java 사용 / --debug-jvm / unittest system.out / stdout 출력
spring boot project 를 vscode 에서 실행하기
잠깐 써본 소감은 'Language Support for Java' 의 memory 를 max 2G까지 올렸는데, 그래서인지 메모리를 많이 잡아먹었다. 그러나, IntelliJ를 사용할때와 비슷한 수준이었다.
설치한 vscode extension
- Debugger for Java: https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-java-debug
- Gradle for Java: https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-gradle
- Language Support for Java(TM) by Red Hat: https://marketplace.visualstudio.com/items?itemName=redhat.java
- Spring Boot Dashboard: https://marketplace.visualstudio.com/items?itemName=vscjava.vscode-spring-boot-dashboard
‘Language Support for Java’ 에 대한 java home 설정
여기선 workspace setting 을 변경했다.
// myproj.code-workspace
{
"folders": [
{
"path": ".."
}
],
"settings": {
"java.jdt.ls.java.home": "d:\\a\\appss\\jdk-17.0.6.10-hotspot"
}
}
gradle extension 에서 실행
아래 그림처럼 gradle 의 task 를 실행할 수 있다. 여기서 debugger 를 run 하거나, 그냥 run 하거나 할 수 있다.
개별 class test 시 debug mode
아직은 gradle extension 에서 개별 class의 test 에 대한 debug mode run 은 지원이 안된다.
그래서 다음과 같은 방법으로 gradle test 에 debugger 를 붙일 수 있다.
- vscode 내부 터미널에서 다음처럼 gradle test 를 실행하고,
gradlew test --tests co.my.pro.MyTests --debug-jvm
- 아래처럼
launch.json
을 설정해서 debugger를 실행(f5)시킨다.
// launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"request": "attach",
"name": "Attach by Process ID",
"processId": "${command:PickJavaProcess}"
}
]
}
- 그러면 process 를 선택하면 된다.
--debug-jvm
: Testing in Java & JVM projects
console log
testLogging.showStandardStreams = true
을 해주면, log 가
stdout 으로 찍힌다.
- testing - Gradle: How to get output from test STDERR/STDOUT into console? - Stack Overflow
- java - Logging while testing through Gradle - Stack Overflow
- Test - Gradle DSL Version 8.5
events=["passed", "failed", "skipped", "standard_out", "standard_error"]
로 설정하는 것은
events=["passed", "failed", "skipped"]
showStandardStreams = true
과 같다. showStandardStreams
은
events=["standard_out", "standard_error"]
과 같다. 위와
같이 설정하면 2개가 동시에 적용된다.
test {
useJUnitPlatform()
// set systemProperties with default value "spring.profiles.active=test"
systemProperties = System.properties
if (!systemProperties.containsKey('spring.profiles.active')) {
systemProperty("spring.profiles.active", "test")
}
testLogging {
events=["passed", "failed", "skipped", "standard_out", "standard_error"]
// events=["passed", "failed", "skipped"]
// showStandardStreams = true
}
}
댓글 없음:
댓글 쓰기