DvfComparablesServiceTest

23

tests

0

failures

0

ignored

0.234s

duration

100%

successful

Tests

Test Duration Result
abstention sous MIN_CANDIDATS -- sample preserve, mais estimated=0 et metriques nulles() 0.007s passed
asOf fige la fenetre du backtest -- SQL date figee, jamais CURRENT_DATE() 0.009s passed
aucun candidat en base rend null sans planter() 0.016s passed
backtest resiste a une base injoignable -- abstention totale, pas d'exception() 0.005s passed
backtest() enchaine echantillon() puis backtestSur() correctement() 0.032s passed
candidatsCausals delegue et renvoie exactement les candidats mockes() 0.008s passed
candidatsCausals resiste a une base injoignable -- liste vide, pas d'exception() 0.004s passed
cas nominal -- prediction exacte quand les candidats causals valent tous le prix reel() 0.007s passed
cohorte heterogene -- mediane et fourchette exactes via MAD pondere() 0.006s passed
cohorte homogene -- mediane exacte et fourchette nulle, confiance degradee par le compte() 0.006s passed
echantillon resiste a une base injoignable -- liste vide, pas d'exception() 0.008s passed
echantillon() renvoie exactement la liste retournee par la requete, sans filtrage cache() 0.012s passed
fenetre de surface normale = ±40 pourcent avec plancher 25m2() 0.005s passed
grande surface -- fenetre proportionnelle sans plancher() 0.047s passed
la fenetre de surface est bornee par MIN_SURFACE cote bas() 0.004s passed
la requete causale exige une date STRICTEMENT anterieure -- anti data-leakage() 0.012s passed
le type brut est normalise en type_local DVF avant d'interroger la base() 0.006s passed
predireAlignes garde l'alignement 1-1 avec le sample -- ordre et abstentions preserves() 0.009s passed
rayonGeoParDefautKm expose exactement le rayon geo utilise par le moteur() 0s passed
sans asOf la fenetre glisse avec CURRENT_DATE() 0.012s passed
sous le hard floor de comparables -- Result non-null mais estimate null (statut INSUFFICIENT)() 0.004s passed
surface nulle ou negative n'interroge jamais la base() 0.005s passed
une base injoignable rend null, jamais une exception() 0.010s passed

Standard output

22:37:55.736 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
22:37:55.756 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112] queryCandidates failed: connection refused
java.lang.RuntimeException: connection refused
	at com.alertimmo.aiscraping.enrichment.DvfComparablesServiceTest.une base injoignable rend null, jamais une exception(DvfComparablesServiceTest.kt:79)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:775)
	at org.junit.platform.commons.support.ReflectionSupport.invokeMethod(ReflectionSupport.java:479)
	at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
	at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:161)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:152)
	at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:91)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:112)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:94)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
	at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:93)
	at org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:87)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:216)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:212)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:137)
	at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:69)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:156)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:41)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:160)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:146)
	at org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java:144)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:143)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:100)
	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:35)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
	at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:54)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:201)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:170)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:94)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:59)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:142)
	at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:58)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:103)
	at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:85)
	at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
	at org.junit.platform.launcher.core.InterceptingLauncher.lambda$execute$1(InterceptingLauncher.java:39)
	at org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor.intercept(ClasspathAlignmentCheckingLauncherInterceptor.java:25)
	at org.junit.platform.launcher.core.InterceptingLauncher.execute(InterceptingLauncher.java:38)
	at org.junit.platform.launcher.core.DelegatingLauncher.execute(DelegatingLauncher.java:47)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:124)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$000(JUnitPlatformTestClassProcessor.java:99)
	at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:94)
	at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:63)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
	at java.base/java.lang.reflect.Method.invoke(Method.java:580)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
	at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
	at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
	at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92)
	at jdk.proxy1/jdk.proxy1.$Proxy4.stop(Unknown Source)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker$3.run(TestWorker.java:200)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103)
	at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63)
	at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:122)
	at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:72)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
	at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
22:37:55.791 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] queryCandidatesCausal failed: boom
22:37:55.812 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/2, MdAPE=null%, hit-rate=null%, biais=null%
22:37:55.813 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST][CALIB] 69003 Appartement : hit@k1.5=null% k2.25=null% k3.0=null% k4.0=null%
22:37:55.820 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=1/1, MdAPE=0.0%, hit-rate=100%, biais=0.0%
22:37:55.821 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST][CALIB] 69003 Appartement : hit@k1.5=100% k2.25=100% k3.0=100% k4.0=100%
22:37:55.834 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
22:37:55.835 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/0, MdAPE=null%, hit-rate=null%, biais=null%
22:37:55.835 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST][CALIB] 69003 Appartement : hit@k1.5=null% k2.25=null% k3.0=null% k4.0=null%
22:37:55.842 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112] top-N: médiane=4000€/m² [3700-4300], n_sel=5, écartés=0, conf=B, status=OK
22:37:55.887 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=3/3, MdAPE=0.0%, hit-rate=100%, biais=0.0%
22:37:55.887 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST][CALIB] 69003 Appartement : hit@k1.5=100% k2.25=100% k3.0=100% k4.0=100%
22:37:55.894 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112] top-N: médiane=4000€/m² [4000-4000], n_sel=6, écartés=0, conf=B, status=OK