如何在常规Spring Framework项目中使用@SpyBean和@MockBean

时间:2018-10-15 14:55:35

标签: java spring spring-boot

我们在out项目中使用Spring Framework 4.3.14-RELEASE。我们的应用程序的结构如下:

parent \
      module-one
      module-two
      ...
      module-n

现在,我们正在尝试在其中一个模块中编写一些集成测试,并且面临下一个问题:需要对Spring Data JPA存储库进行监视。 在Spring Boot中,我们有@SpyBean@MockBean批注,但在常规的Spring Framework中不可用。我们无法迁移到Spring Boot。

我们试图将spring-boot-testspring-boot-test-starter添加到我们的项目中,但是很明显,它没有用:依赖项没有出现在类路径中。

我的问题是:是否可以在常规项目中使用这些注释?还是其他监视Spring Data JPA存储库的方法?

更新:示例

@Service
public void MegaService {
    @Autowired
    MegaRepository repository;
    // ....
}

public interface MegaRepository extends JpaRepository<MegaModel, Long> {
   // ...
}

@Configuration
public class TestRepoConfiguration {

    @Bean
    MegaRepository megaRepository(MegaRepository repository) {
        return Mockito.spy(repository); // of course, it does not work
    }
}

@RunWith(SpringJUnit4ClassRunner.class)
public class MegaIntegrationTest {
    @Autowired
    MegaRepository repository;

    public void testMegaLogic() {
        when(repository.findAll()).thenAnswer(invocation -> {
             System.out.println("Hello, comrades");
             return invocation;
        });
    }
}

1 个答案:

答案 0 :(得分:0)