【问题标题】:Spring cloud contract: defining order of execution of generated tests (more than 10)Spring Cloud Contract:定义生成测试的执行顺序(10多条)
【发布时间】:2019-04-24 07:09:40
【问题描述】:

我正在为我的项目使用 Spring Cloud 合同。我可以访问生产者和消费者端代码。

1) 我在 producer repo 中创建了两个合约(即 one.yml,two.yml)

2) 生产者端 SCC 自动生成的测试用例 (JUNIT4) 并通过(因为已经完成)

3) 我在消费者端创建了测试。消费者方面的测试能够获得存根响应(来自本地 maven repo)并且一切都按预期工作。

现在我想定义这些测试的顺序,以便 one.yml 总是在 two.yml 之前运行。所以,我创建了一个直接调用的场景,将合约重命名为 1_one.yml 和 2_two.yml 并将它们移动到新创建的目录中。更改后:

1) 生产者端自动生成的测试通过

2) 消费者端测试失败!!!

您能否解释一下为什么会发生这种情况以及我需要做什么来定义这种测试顺序? (我必须创建 10 个 yaml 合约,并且自动生成的测试应该有一个预定义的顺序)

【问题讨论】:

    标签: spring-cloud-contract


    【解决方案1】:

    通过添加前缀,您已经创建了场景。因此,从合同一中描述的状态开始后,您已经设法进入合同二中描述的状态二。您可以阅读有关场景的文档。

    如果你需要它们按字母顺序排列,但你不能在开头使用数字

    【讨论】:

    • “如果你需要它们按字母顺序排列”。你的意思是我应该做以下事情1)按字母升序重命名合同2)在我的基础测试类中添加注释@FixMethodOrder(MethodSorters.NAME_ASCENDING)?
    • 在基类上添加 FixedMethodOrder 不起作用,因为这不是继承的注释。应在具体测试类上指定此注释。自 2012 年以来存在一个错误 (github.com/junit-team/junit4/issues/559),社区中的一些人不希望这种行为。 Spring Cloud Contract 是否具有可用于在生成的类上添加此注释的配置?或者我们还有其他解决方法来实现测试排序吗?
    • 这是一种解决方法。一般来说,除了场景之外,强制测试排序不是一种常见且建议的方法
    • 我认为我们从未假设有超过 9 个场景。您可以在 sc 合同回购中创建问题。一般来说,我认为您试图在您的联系人中复制业务逻辑,这是一个错误。合同应该非常简单,并且您正在尝试设置复杂的有状态存根。
    • 我查看了 Spring 云合约代码,我认为不需要创建问题。我可以通过启动 01_one.yml, 02_two.yml 而不是 1_step1, 2_step2 :P 之类的场景来完成这项工作。所以,我认为它只需要更新文档。
    猜你喜欢
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2018-10-15
    • 1970-01-01
    相关资源
    最近更新 更多