| | |
| | | import com.battery.device.api.TestDataObservationAdapter; |
| | | |
| | | /** |
| | | * 取数入口的装配契约:开发模拟器既是 Spring Bean,又实现了测试数据观测契约, |
| | | * 所以业务侧注入的那个 Bean 必须显式声明为首选,否则上下文里出现两个候选会启动失败。 |
| | | * 取数入口的装配契约:业务侧只注入一个测试数据观测 Bean,各来源实例由适配器注册表在运行时提供, |
| | | * 所以这个入口必须显式声明为首选,否则上下文里出现两个候选会启动失败。 |
| | | * 这里断言的是"哪个 Bean 会被注入"这个结构性事实,而不是 Spring 内部行为。 |
| | | */ |
| | | class RoutingAdapterWiringContractTest |
| | |
| | | "取数入口必须是可注入的 Bean"); |
| | | assertTrue(RoutingTestDataObservationAdapter.class.isAnnotationPresent(Primary.class), |
| | | "来源实例自己也实现该契约时必须显式首选路由入口,否则注入出现两个候选"); |
| | | } |
| | | |
| | | @Test |
| | | void developmentSimulatorAlsoExposesTheContractWhichIsWhyPreferenceIsNeeded() |
| | | { |
| | | assertTrue(TestDataObservationAdapter.class |
| | | .isAssignableFrom(com.battery.device.simulator.BtsDevelopmentSimulator.class)); |
| | | } |
| | | } |