切面反射注入
写切面方法 在目标测试类方法被调用的切面,反射注入mock类
spring运行期注入
classpath:
- 写专门mock测试用的config配置类
import spring的原applicationContext.xml
添加mock的bean所在包到@ComponentScan中 (示例中config和mock的bean在同一个包下,用类声明)
@ComponentScan(basePackageClasses = FtMockConfig.class)
@ImportResource(locations = "classpath:/applicationContext.xml")
public class FtMockConfig {
}
- 确认原applicationContext.xml中bean的dubbo-import的扫描方式为classpath:而非classpath*:
spring classpath:和classpath*:区别和实际应用classpath:
只会在第一个加载的类路径下查找
而classpath*: 会把所有jar包、类路径下查找,会造成bean冲突。
如上操作,application-dubbo-import.xml中的所有bean都不能被加载,因此需要mock该xml文件下的所有类。
写mock测试的 测试类
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = FtMockConfig.class)
public class DemoMockTest {
}
在test类路径下写dubbo接口的实现 ,并确保能被步骤一的config扫描到
因为在test路径下,这个实现类大于dubbo服务的bean加载优先级,所有会优先被加载,而跳过去dubbo注册中心实例化bean.