yeg
2026-09-05 92f32acd847ea1700590bc669750f23ef499840e
battery-business/src/test/java/com/battery/business/ModuleDependencyContractTest.java
@@ -5,7 +5,7 @@
import java.nio.file.Path;
import org.junit.jupiter.api.Test;
/** 防止业务模块在骨架阶段意外引入具体设备实现。 */
/** 防止业务实现重新依赖厂商、模拟器或传输基础设施。 */
class ModuleDependencyContractTest
{
    @Test
@@ -18,4 +18,19 @@
        assertFalse(text.contains("battery-device-simulator"));
        assertFalse(text.contains("spring-boot-starter-data-redis"));
    }
    @Test void businessSourcesDependOnlyOnDeviceApi() throws Exception
    {
        Path sources = Path.of("src/main/java");
        try (var files = Files.walk(sources))
        {
            for (Path file : files.filter(path -> path.toString().endsWith(".java")).toList())
            {
                String source = Files.readString(file);
                for (String forbidden : java.util.List.of("com.battery.device.bts", "com.battery.device.simulator",
                        "com.ruoyi.system", "org.springframework.web", "org.springframework.data.redis", "SseEmitter"))
                    assertFalse(source.contains(forbidden), file + " contains " + forbidden);
            }
        }
    }
}