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