DvfComparablesServiceTest

23

tests

0

failures

0

ignored

0.162s

duration

100%

successful

Tests

Test Duration Result
abstention sous MIN_CANDIDATS -- sample preserve, mais estimated=0 et metriques nulles() 0.005s 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.003s passed
backtest() enchaine echantillon() puis backtestSur() correctement() 0.005s passed
candidatsCausals delegue et renvoie exactement les candidats mockes() 0.005s 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.004s passed
cohorte heterogene -- mediane et fourchette exactes via MAD pondere() 0.003s passed
cohorte homogene -- mediane exacte et fourchette nulle, confiance degradee par le compte() 0.003s passed
echantillon resiste a une base injoignable -- liste vide, pas d'exception() 0.003s 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.013s passed
la fenetre de surface est bornee par MIN_SURFACE cote bas() 0.024s passed
la requete causale exige une date STRICTEMENT anterieure -- anti data-leakage() 0.046s 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.004s passed
rayonGeoParDefautKm expose exactement le rayon geo utilise par le moteur() 0.001s passed
sans asOf la fenetre glisse avec CURRENT_DATE() 0.004s 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.004s passed
une base injoignable rend null, jamais une exception() 0.009s passed

Standard output

05:51:54.888 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
05:51:54.902 [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)
05:51:54.922 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] queryCandidatesCausal failed: boom
05:51:54.962 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/2, MdAPE=null%, hit-rate=null%, biais=null%
05:51:54.962 [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%
05:51:54.966 [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%
05:51:54.967 [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%
05:51:54.974 [Test worker] WARN com.alertimmo.aiscraping.enrichment.DvfComparablesService -- ⚠️ [DVF][ADR-112][BACKTEST] querySample failed: connection refused
05:51:54.974 [Test worker] INFO com.alertimmo.aiscraping.enrichment.DvfComparablesService -- 📊 [DVF][ADR-112][BACKTEST] 69003 Appartement : n=0/0, MdAPE=null%, hit-rate=null%, biais=null%
05:51:54.974 [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%
05:51:54.978 [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
05:51:54.987 [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%
05:51:54.987 [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%
05:51:54.991 [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