전체 스위트 실행 시 115개 중 28개가 실패하던 문제 처리.
1. 클래스별 JVM 격리 (25건)
TransformEngine/LayoutManager/MessageFactory 는 ApplicationContextProvider
기반의 JVM 전역 싱글턴이라, 한 JVM 에서 여러 테스트 클래스를 돌리면 마지막에
뜬 스프링 컨텍스트가 앞선 컨텍스트를 덮어쓴다. 그 결과 뒤 클래스가 앞 클래스의
레이아웃을 보게 되어 "cannot create message" 로 실패했다.
(각 클래스는 단독 실행 시에는 모두 통과)
→ build.gradle test 태스크에 forkEvery = 1 추가.
느려지는 부분은 maxParallelForks 로 상쇄 (7분 → 4분 28초).
2. GetTrinomialFunctionTest 기대값 정정 (2건)
JEP addStandardConstants() 에는 true/false 가 없고 Parser 가 이를 Boolean 으로
등록한다(Parser.addBooleanConstants). 테스트 setUp 도 Boolean 을 바인딩해 놓고
결과를 Number 로 단언하고 있어 자기모순이었음 → Boolean 기대로 정정.
3. LayoutRepositoryTest 시드 ID 수정 (1건)
시드 SQL 어디에도 없는 TST_TTST00000002_RES 를 조회하고 있었음
→ init_tseaitr07/08 에 존재하는 TST_TOSSTEST1_TGT 로 변경.
운영 코드 변경 없음 (build.gradle 테스트 설정 + 테스트 코드만).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnVAVJLEqjhZnzeWbNcp5q
- SystemKeys: TRANSFROMER_SCIENTIFIC_NORMALIZE 키 및
isScientificNormalizeEnabled() 추가
- JSONMessage.isValid(): flag ON 시 toPlainString()으로 정규화 후 검증
- false positive 방지: 1.23e5(=123000)가 자릿수 제한을 우회하는 문제 차단
- false negative 방지: pointLength=0 필드에서 유효한 지수형 값이 거부되는 문제 해결
- JSONMessageValidationTest: 지수형 시나리오 4개 추가 (정규화 ON/OFF 각 케이스)
- ConcatN: numberOfParameters=-1로 파라미터 수 제한 없이 문자열 연결
- 기존 Concat(2개 고정)을 대체 가능하며 하위 호환성 유지
- ConcatNFunctionTest: JEP 직접 사용, 파라미터 수 변화 검증
- ConcatNParserTest: Parser 클래스 경유, 변수/상수 혼합 표현식 및 성능 검증
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- JSONMessage BigDecimal 자릿수 검사를 setData() 시점으로 통일
- SystemKeys.isValidationEnabled() 하드코딩 버그 수정
- JSONMessageValidationTest 7개 테스트 추가
- JSON_VALIDATION_TEST_PLAN.md 작업 내역 문서화
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- doSetValue()의 TYPE_BIGDECIMAL case에 isValid() 검사 추가
- 자릿수 초과 오류 발생 시점이 getData()에서 setData()로 통일
- 테스트: 자릿수 초과 3건 기대 예외를 InvalidDataTypeException → MessageSetDataException으로 변경
- JSON_VALIDATION_TEST_PLAN.md 내용 최신화
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[*]있는지 체크하고 예외 발생, Grid to Group 맵핑 해야할 경우가 생겨, 예외 주석처리.
2.Grid to Group 맵핑 Grid기준 첫번째 항목만 맵핑되도록 원래는 Grid가 count수만큼 반복부 돌며, 덮어씌기가
되어 마지막 항목의 값이 맵핑됨.
값맵핑할 타겟 아이템이 이미 값이 설정되어있으면 앞에서 맵핑처리가 이미되었단 뜻이니, return 하도록 처리.