DvfComparablesServiceTest

23

tests

0

failures

0

ignored

0.074s

duration

100%

successful

Tests

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

Standard output

01:02:10.564 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
01:02:10.574 [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)
01:02:10.586 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] queryCandidatesCausal failed: boom
01:02:10.600 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/2, MdAPE=null%, hit-rate=null%, biais=null%
01:02:10.600 [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%
01:02:10.603 [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%
01:02:10.603 [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%
01:02:10.607 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
01:02:10.607 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/0, MdAPE=null%, hit-rate=null%, biais=null%
01:02:10.607 [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%
01:02:10.609 [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
01:02:10.613 [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%
01:02:10.613 [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%
01:02:10.615 [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