我尝试如下更改基本测试类的默认测试目录名称:
旧:
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任务?
答案 0 :(得分:1)
目前不支持。随时查找问题或创建新问题