gradle - 从 Spring Contract 的合约和基类测试的默认 "test"目录更改

标签 gradle spring-cloud-contract

我已尝试更改基本测试类的默认测试目录名称,如下所示:

老的:

bignibou-server/src/test/java/com/bignibou/signup

新的:
bignibou-server/src/contracts/java/com/bignibou/signup

这是我的契约(Contract)所在的目录:

新的:
bignibou-server/src/contracts/resources/contracts/signup

这是我的gradle配置:
contracts {
    packageWithBaseClasses = 'com.bignibou'
    baseClassMappings {
        baseClassMapping(".*signup*.", "com.bignibou.signup.SignupBase")
    }
}

我对 使用相同的 gradle 配置契约(Contract)测试和集成测试 .看:
sourceSets {

    integrationTest {
        java.srcDirs = ['src/it/java', 'src/contracts/java']
        resources.srcDirs = ['src/it/resources', 'src/contracts/resources']
        compileClasspath = sourceSets.main.output + configurations.testRuntime
        runtimeClasspath = output + compileClasspath
    }
}

但是,由于我将基类测试和契约(Contract)从 test目录,契约(Contract)测试也不运行......

编辑 :

搜索文档后,我找到了 contractsDslDir可以使用的属性如下:
contracts {
    packageWithBaseClasses = 'com.bignibou'
    contractsDslDir = new File("${project.rootDir}/src/contracts/resources/contracts")
    baseClassMappings {
        baseClassMapping(".*signup*.", "com.bignibou.signup.SignupBase")
    }
}

但是,测试仍然没有运行......我还缺少什么?

这是我尝试运行测试的方式:
./gradlew clean check

编辑 2 :

我能够让 Spring Cloud Contract 使用以下值找到我的契约(Contract) contractsDslDir :
contractsDslDir = new File("./src/contracts/resources/contracts")

现在的问题是我的测试找不到测试基地:
> Task :bignibou-server:compileTestJava FAILED
/Users/julien/Documents/projects/bignibou/bignibou-server/build/generated-test-sources/contracts/com/bignibou/SignupTest.java:3: error: package com.bignibou.signup does not exist
import com.bignibou.signup.SignupBase;
                          ^
/Users/julien/Documents/projects/bignibou/bignibou-server/build/generated-test-sources/contracts/com/bignibou/SignupTest.java:20: error: cannot find symbol
public class SignupTest extends SignupBase {
                                ^
  symbol: class SignupBase
2 errors

FAILURE: Build failed with an exception.

编辑 3 : 奇怪的是:Spring Cloud Contracts 似乎仍然绑定(bind)到 test gradle 任务(而不是我的自定义 integrationTest 一个)...

当我运行 ./gradlew clean integrationTest甚至没有搜索契约(Contract)...但是当我运行 ./gradlew clean test我收到上述错误,表明 Spring Cloud Contract 正在寻找一个基类但没有找到。

如何告诉 Spring Cloud Contract 绑定(bind)到我的自定义 integrationTest毕业任务?

最佳答案

目前不支持。如果找不到问题,请随意查找问题或创建一个新问题

关于gradle - 从 Spring Contract 的合约和基类测试的默认 "test"目录更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57393674/

相关文章:

spring - Wiremock 为 Spring Cloud Contract stub 运行器返回错误的内容类型

java - Spring Cloud 契约(Contract) : Write Contract Test for multiple consumer with different or partially different expectations

spring-cloud-contract - 错误: Stubs could not be found. 请确保调用了 spring-cloud-contract:convert

spring-cloud - 线模错误 : Request was not matched as there were no stubs registered

android - 更新到buildToolsVersion 25结果ClassNotFoundException

jenkins - 无法在Jenkins共享库的单元测试中导入包

android-studio - 我在哪里添加我的依赖项?将它们放在哪个 build.gradle 中?

android - 外部 AndroidManifest.xml 未出现在项目 View Pane 下

jenkins - gradle-使步骤100%可选

spring-boot - 该工件在本地存储库中找到,但您已明确声明应从远程存储库下载它”