diff --git a/build.gradle b/build.gradle index 81dc653..17a963b 100644 --- a/build.gradle +++ b/build.gradle @@ -92,6 +92,16 @@ dependencies { test { useJUnitPlatform() + + // TransformEngine/LayoutManager/MessageFactory 는 ApplicationContextProvider 기반의 + // JVM 전역 싱글턴이다. 한 JVM 에서 여러 테스트 클래스를 돌리면 마지막에 뜬 스프링 + // 컨텍스트가 앞선 컨텍스트를 덮어써서, 뒤 클래스가 앞 클래스의 레이아웃을 보게 된다 + // ("cannot create message" 오류). 클래스마다 JVM 을 새로 띄워 격리한다. + forkEvery = 1 + + // 클래스별 JVM 분리로 느려지는 것을 CPU 코어 수만큼 병렬 실행해 상쇄한다. + // 포크마다 별도 JVM(=별도 H2 인메모리 DB)이라 서로 간섭하지 않는다. + maxParallelForks = Math.max(1, Runtime.runtime.availableProcessors().intdiv(2)) } publishing { diff --git a/src/test/java/com/eactive/eai/transformer/GetTrinomialFunctionTest.java b/src/test/java/com/eactive/eai/transformer/GetTrinomialFunctionTest.java index f34363e..3f3e02b 100644 --- a/src/test/java/com/eactive/eai/transformer/GetTrinomialFunctionTest.java +++ b/src/test/java/com/eactive/eai/transformer/GetTrinomialFunctionTest.java @@ -146,17 +146,17 @@ class GetTrinomialFunctionTest { // ───────────────────────────────────────────────────────────────── @Test - @DisplayName("실전 패턴 — true/false 결과값 (JEP 상수 1.0/0.0 반환 검증)") + @DisplayName("실전 패턴 — true/false 결과값 (Boolean 타입 반환 검증)") void testBooleanLiteralReturnValue() { - // JEP addStandardConstants()가 true=1.0, false=0.0 으로 등록하는지 확인 - // → 등록되어 있다면 변수 바인딩 없이 숫자로 반환됨 - // → 등록 안 됐다면 파싱 오류 또는 undeclared 변수(NaN)로 처리됨 + // JEP addStandardConstants() 에는 true/false 가 없다. + // Parser 가 이를 Boolean 으로 직접 등록하므로(Parser.addBooleanConstants), + // 결과값은 숫자 1.0/0.0 이 아니라 Boolean 이다. setUp 도 동일하게 바인딩한다. jep.addVariable("intVal", 10.0); Object result = eval("getTrinomial(intVal, 10, \"=\", true, false)"); - assertTrue(result instanceof Number, - "true/false 결과값이 Number 타입이어야 함 (실제: " + result.getClass().getSimpleName() + ")"); - assertEquals(1.0, ((Number) result).doubleValue(), 0.0, - "조건 참일 때 true(=1.0) 반환 기대"); + assertTrue(result instanceof Boolean, + "true/false 결과값이 Boolean 타입이어야 함 (실제: " + result.getClass().getSimpleName() + ")"); + assertEquals(Boolean.TRUE, result, + "조건 참일 때 true 반환 기대"); } @Test @@ -197,9 +197,9 @@ class GetTrinomialFunctionTest { assertFalse(jep.hasError(), "평가 오류: " + jep.getErrorInfo()); } - assertTrue(result instanceof Number, - "결과값이 Number 타입이어야 함 (실제: " + (result == null ? "null" : result.getClass().getSimpleName()) + ")"); - assertEquals(1.0, ((Number) result).doubleValue(), 0.0, - "INT_VALUE=10, 비교값=10, 연산자=등호 → 참(true=1.0) 반환 기대"); + assertTrue(result instanceof Boolean, + "결과값이 Boolean 타입이어야 함 (실제: " + (result == null ? "null" : result.getClass().getSimpleName()) + ")"); + assertEquals(Boolean.TRUE, result, + "INT_VALUE=10, 비교값=10, 연산자=등호 → 참(true) 반환 기대"); } } diff --git a/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java b/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java index df8ab00..4d1b5be 100644 --- a/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java +++ b/src/test/java/com/eactive/eai/transformer/layout/loader/LayoutRepositoryTest.java @@ -24,7 +24,7 @@ class LayoutRepositoryTest { @Test void testFindById() { - LayoutEntity layoutEntity = layoutLoaderRepository.getReferenceById("TST_TTST00000002_RES"); + LayoutEntity layoutEntity = layoutLoaderRepository.getReferenceById("TST_TOSSTEST1_TGT"); layoutEntity = layoutEntity.getLayoutItemEntities().stream().findAny().get().getLayoutEntity(); assertNotNull(layoutEntity); System.out.println(layoutEntity);