对dubbo服务进行单元测试,是不是无法通过Spring-test自动回滚数据

我现在希望通过单元测试来测试一个dubbo服务中的方法,但是此方法每次都会修改数据库中的数据,单元测试无法重复跑。

所以我想利用Spring-test来进行单元测试的自动回滚。我在Spring+MyBatis+MySQL的环境下,单元测试可以成功进行自动回滚。

可是当我在将修改数据库的方法修改为dubbo服务之后,单元测试就无法自动回滚数据了。

我自己的思考是这样的:

  • 在单元测试执行的时候,单元测试明显花费了很长的时间来进行dubbo服务启动,说明,每次执行单元测试,都重新在ZooKeeper上注册了一个dubbo服务。
  • 如果想要通过Spring-test进行数据的自动回滚,必须还在Spring的控制范围内,而dubbo服务已经脱离了Spring的控制范围,相当于在代码中调用一个远程服务,而远程服务如何修改数据库,是无法回滚的。

如果是这样的,还有没有其他方法能够实现对dubbo服务里的方法的单元测试?

附相关代码:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring/spring-context.xml" })
@Transactional
public class ApplyFacadeTest extends AbstractTransactionalJUnit4SpringContextTests {

    @Autowired
    private ApplyFacade applyFacade; // dubbo方法
    
    @Test
    @Rollback(true)
    public void testRevokeApply() {
        RevokeApplyReqDTO reqDTO = new RevokeApplyReqDTO();
        reqDTO.setApplyId(289L);
        reqDTO.setUserId(2059L);
        // 调用dubbo方法撤回订单
        System.out.println(applyFacade.revokeApply(reqDTO, context));
        System.out.println();
    }   
}

在spring的配置文件中,我建立了一个bean:

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="hc_suite_masterDataSource" />
</bean>

由于数据库使用了主从库的配置,dataSource配置的是主库。

阅读 4.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题