切面反射注入

写切面方法 在目标测试类方法被调用的切面,反射注入mock类

spring运行期注入

对mock类spring运行期间注入

classpath:

  1. 写专门mock测试用的config配置类

import spring的原applicationContext.xml
添加mock的bean所在包到@ComponentScan中 (示例中config和mock的bean在同一个包下,用类声明)

  1. @ComponentScan(basePackageClasses = FtMockConfig.class)
  2. @ImportResource(locations = "classpath:/applicationContext.xml")
  3. public class FtMockConfig {
  4. }
  1. 确认原applicationContext.xml中bean的dubbo-import的扫描方式为classpath:而非classpath*:

spring classpath:和classpath*:区别和实际应用
image.png
classpath:只会在第一个加载的类路径下查找
而classpath*: 会把所有jar包、类路径下查找,会造成bean冲突。
如上操作,application-dubbo-import.xml中的所有bean都不能被加载,因此需要mock该xml文件下的所有类。

  1. 写mock测试的 测试类

    1. @RunWith(SpringJUnit4ClassRunner.class)
    2. @WebAppConfiguration
    3. @ContextConfiguration(classes = FtMockConfig.class)
    4. public class DemoMockTest {
    5. }
  2. 在test类路径下写dubbo接口的实现 ,并确保能被步骤一的config扫描到

因为在test路径下,这个实现类大于dubbo服务的bean加载优先级,所有会优先被加载,而跳过去dubbo注册中心实例化bean.