DvfComparablesServiceTest

23

tests

0

failures

0

ignored

0.236s

duration

100%

successful

Tests

Test Duration Result
abstention sous MIN_CANDIDATS -- sample preserve, mais estimated=0 et metriques nulles() 0.004s passed
asOf fige la fenetre du backtest -- SQL date figee, jamais CURRENT_DATE() 0.003s passed
aucun candidat en base rend null sans planter() 0.003s passed
backtest resiste a une base injoignable -- abstention totale, pas d'exception() 0.002s passed
backtest() enchaine echantillon() puis backtestSur() correctement() 0.018s passed
candidatsCausals delegue et renvoie exactement les candidats mockes() 0.004s passed
candidatsCausals resiste a une base injoignable -- liste vide, pas d'exception() 0.007s passed
cas nominal -- prediction exacte quand les candidats causals valent tous le prix reel() 0.004s passed
cohorte heterogene -- mediane et fourchette exactes via MAD pondere() 0.002s passed
cohorte homogene -- mediane exacte et fourchette nulle, confiance degradee par le compte() 0.004s passed
echantillon resiste a une base injoignable -- liste vide, pas d'exception() 0.004s passed
echantillon() renvoie exactement la liste retournee par la requete, sans filtrage cache() 0.007s passed
fenetre de surface normale = ±40 pourcent avec plancher 25m2() 0.002s passed
grande surface -- fenetre proportionnelle sans plancher() 0.010s 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.006s passed
le type brut est normalise en type_local DVF avant d'interroger la base() 0.004s passed
predireAlignes garde l'alignement 1-1 avec le sample -- ordre et abstentions preserves() 0.055s passed
rayonGeoParDefautKm expose exactement le rayon geo utilise par le moteur() 0.001s passed
sans asOf la fenetre glisse avec CURRENT_DATE() 0.040s 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.034s passed
une base injoignable rend null, jamais une exception() 0.016s passed

Standard output

00:16:00.572 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
00:16:00.581 [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)
00:16:00.650 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] queryCandidatesCausal failed: boom
00:16:00.668 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/2, MdAPE=null%, hit-rate=null%, biais=null%
00:16:00.669 [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%
00:16:00.675 [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%
00:16:00.675 [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%
00:16:00.681 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
00:16:00.682 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/0, MdAPE=null%, hit-rate=null%, biais=null%
00:16:00.682 [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%
00:16:00.685 [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
00:16:00.760 [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%
00:16:00.760 [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%
00:16:00.766 [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