当前位置: 首页 > 知识库问答 >
问题:

Spring云服务的单元测试策略

左丘修齐
2023-03-14
eureka.client.enabled=false

要从business-service访问data-service,我使用了一个@FeignClient(“data-service”)带注释的接口,名为dataclient,该接口在需要时是@autowired。如果两者都在运行,则该服务将被Eureka发现。这对于所有服务都在运行的类似生产的设置很好。

但现在我想对我的business-service的一些特性进行单元测试。启动一个测试服务并不成问题

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class)

就像我在数据服务中所做的那样。问题是Eureka依赖于我的FeignClient的发现...因此我的testclass崩溃,因为自动执行的DataClient-实例不工作。

我能告诉Spring使用一个伪造的DataClient实例来进行测试吗?还是让我的测试运行data-service的可访问、正在运行的实例和我的Eureka服务器的唯一方法?

共有1个答案

丌官信厚
2023-03-14

1、首先创建config bean,让discovery客户端和feignclient只在“eureka.enabled”为true时工作

@Configuration
@EnableDiscoveryClient
@EnableFeignClients
@ConditionalOnProperty(name = "eureka.enabled")
public class EurekaConfig {
}

2、禁用测试配置文件的eureka配置,因此在application-test.yml中

eureka:
     enabled: false

3.我项目是由maven构建的,因此我为我的假客户机接口创建了一个实现,例如:

@Service
public class DataServiceImpl implements DataService {}

在此之后,当您在单元测试中运行测试时

@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
@IntegrationTest({"server.port=0", "management.port=0",    "spring.profiles.active=test"})
public abstract class AbstractIntegrationTests {}

假服务将注入spring上下文。

或者对于普通的单元测试用例,您可以只需要mockito模拟服务类,并使用set方法或construct方法在类中注入mock对象

 类似资料:
  • 像组件一样,服务通常需要依赖,Angular通过服务类的构造函数注入。由于我们在Angular的引导过程之外初始化这些类,我们必须自己显式注入这些依赖。这是通过使用TestBed配置测试模块传回所需的依赖项(如HTTP模块)来实现的。

  • 在我的项目中,我在进行单元测试时遇到了问题。一个问题是,仅仅进行联调就可以更快地编写,并且还可以测试组件是否真正协同工作。单元测试新颖的“算法”之类的似乎要容易得多。单元测试服务类感觉是错误和无用的。 我使用mockito来模拟spring数据存储库(以及DB访问)。问题是,如果我告诉模拟存储库在方法调用getById时返回实体A,它显然会返回实体A,服务也会返回实体A。是的,该服务做了一些额外的

  • 本文向大家介绍AngularJS 单元测试服务,包括了AngularJS 单元测试服务的使用技巧和注意事项,需要的朋友参考一下 示例 服务编号 考试 跑!

  • 我已经开始考虑在我的项目中围绕一些业务逻辑添加一些单元测试。 我想测试的第一个方法是服务层中的一个方法,它返回给定节点的子节点列表。 该方法如下所示: 我想象这样的测试方法是提供一个假树结构,然后测试提供节点是否返回正确的子节点。 ssdsContext是一个对象上下文。 我已经看到可以为提取和接口如何模拟ObjectContext或ObjectQuery 我还读到,as Entity Frame

  • 我想对一个组件的功能进行单元测试。因此,我需要一个模拟服务(根据角度测试指南)。 这里是我的测试床: 那么,嘲笑服务价值的正确方法是什么呢? 弗兰克

  • 我正在尝试对服务方法进行单元测试。服务方法调用spring数据存储库方法来获取一些数据。我想模拟这个存储库调用,并自己提供数据。如何做到这一点?在Spring Boot文档之后,当我模拟存储库并在测试代码中直接调用存储库方法时,模拟工作正常。但是,当我调用服务方法时,反过来调用存储库方法,mocking就不起作用了。下面是示例代码: 服务级别: 测试等级: