package com.battery.business.runtime; import static org.junit.jupiter.api.Assertions.assertInstanceOf; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.mockito.Mockito.mock; import org.junit.jupiter.api.Test; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import com.battery.device.api.NoopDeviceAdapter; import com.battery.device.api.registry.DeviceAdapterRegistry; import com.battery.business.mapper.TDeviceIngestRecordMapper; class DeviceAdapterRuntimeNoopStartupTest { @Test void startsWithoutDeviceProfileUsingNoopRegistry() { try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext()) { context.register(DeviceAdapterRuntimeConfig.class); // 推式来源的工厂读本项目的落地表,因此需要它的 Mapper(真实应用里由 MyBatis 提供); // 本用例断言的是"没有配置任何设备来源时仍能装配出无设备实现",所以这里给一个空替身。 context.registerBean(TDeviceIngestRecordMapper.class, () -> mock(TDeviceIngestRecordMapper.class)); context.refresh(); DeviceAdapterRegistry registry = context.getBean(DeviceAdapterRegistry.class); // 模拟器已整体拆除:它的运行时编码不再出现在注册表里。 assertFalse(registry.contains("dev-sim")); registry.synchronize(new com.battery.device.api.registry.AdapterInstanceConfig( "noop-check", "NOOP", "127.0.0.1", 1, 1000, "Asia/Hong_Kong", true, new com.battery.device.api.model.AdapterCapabilities(true, true, false, false))); var adapter = registry.execute("noop-check", value -> value); assertInstanceOf(NoopDeviceAdapter.class, adapter); } } }