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

创建可配置的JUnit库以跨多个微服务测试相同的功能

蔚和安
2023-03-14

应该在每个微服务上运行一组测试。当前的解决方案是有一个抽象类并在每个服务中扩展,在抽象getter中提供必要的属性。

public abstract class AbstractTest {

    @LocalServerPort
    protected int serverPort;

    protected abstract String getPath();
 
    @Test
    void someTest() {}

    @Test
    void conditionalTest() {}
}

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT,
    classes = {...})
@ActiveProfiles(...) // etc
public class MyTest extends AbstractTest {
// ... implement getPath()
// tests from parent will be executed
}

目标是:放弃继承,让AbstractTest的逻辑自动执行,并基于bean/properties等执行条件@Test

可能的解决方案是:一个包含所有测试的具体类或某种配置/TestFactory来创建必要的测试。它应该考虑可用的属性和bean来确定要运行哪些测试。

问题是:这些测试(在运行时创建)如何被发现并注册以执行?如何注入属于@SpringBootTest当前上下文的所有属性?

失败的尝试:

  • TestInstanceFactory扩展似乎不是解决方案,因为它需要一个它所注释的类的实例

理想情况下,我不希望这个lib的客户端实现/创建任何东西,所以抽象String getPath();将是一个test.lib.path属性,如果它存在,则将运行来自使用它的库的测试。

对此有任何想法都会很好,因为现在我觉得这是不可能的。

共有1个答案

益明朗
2023-03-14

有测试继承的原因是什么?例如,如果您需要在测试中共享一些通用逻辑,您可以尝试JUnit功能(自定义规则/扩展)

  1. 对于junit

 类似资料:
  • db-config-test.xml Maven插件: StackError:

  • 我遇到了一个问题,如何使用Netflix Archaius作为多个Spring Boot微服务的配置服务器。以前,当我在使用Spring Boot构建的多服务项目中应用Eureka和Spring Cloud Config Server时,每个microservie都将通过Eureka服务的发现功能从Spring Cloud Config Server获得自己的.properties文件。但是现在我

  • 是否可以在跨不同服务器的多个数据库之间编写查询? 有可能吗?

  • 本文向大家介绍可以用微服务创建状态机吗?相关面试题,主要包含被问及可以用微服务创建状态机吗?时的应答技巧和注意事项,需要的朋友参考一下 我们知道拥有自己数据库的每个微服务都是一个可独立部署的程序单元,这反过来又让我们可以创建一个状态机。因此,我们可以为特定的微服务指定不同的状态和事件。 例如,我们可以定义 Order 微服务。订单可以具有不同的状态。Order 状态的转换可以是 Order 微服务

  • 第1步:我想有一个

  • 考虑一个maven实用工具模块(模块1),它定义了一个抽象类:AbstractFoo.java。在测试资源下,编写了所述类的模型:foomockup.java。还编写了一个测试类:AbstractFootest.java。 现在考虑第二个模块(模块2),它包含一个使用AbstractFoo的类,并声明测试用例:bar.java和bartest.java。java在创建Bar实例的同时创建FooMo