从Spring Contract的合同和基类测试的默认“测试”目录更改为

时间:2019-08-07 11:43:51

标签: gradle spring-cloud-contract

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

旧:

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

新功能:

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

这是我的合同所在的目录:

新功能:

bignibou-server/src/contracts/resources/contracts/signup

这是我的gradle配置:

contracts {
    packageWithBaseClasses = 'com.bignibou'
    baseClassMappings {
        baseClassMapping(".*signup*.", "com.bignibou.signup.SignupBase")
    }
}

我对合同测试和集成测试使用相同的gradle配置。参见:

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
    }
}

但是,由于我将基类测试和合同从test目录中移出,因此合同测试也无法运行...

修改

在搜索文档后,我发现了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

我能够使用contractsDslDir的以下值获取Spring Cloud Contract来查找我的合同:

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似乎仍然绑定到test gradle任务(与我的自定义integrationTest相对)...

当我运行./gradlew clean integrationTest时,甚至都没有搜索到合同...但是,当我运行./gradlew clean test时,出现了以上错误,指示Spring Cloud Contract正在寻找基类,但没有找到基类。

如何告诉Spring Cloud Contract绑定到我的自定义integrationTest gradle任务?

1 个答案:

答案 0 :(得分:1)

目前不支持。随时查找问题或创建新问题