从默认 "test" 目录更改 Spring 合约的合约和基础 class 测试
Changing from the default "test" directory for Spring Contract's contracts and base class tests
我已尝试更改基本测试 classes 的默认测试目录名称,如下所示:
旧:
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
}
}
但是,由于我将基础 class 测试和合同从 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 正在寻找基地 class 但没有找到。
如何告诉 Spring Cloud Contract 绑定到我的自定义 integrationTest
gradle 任务?
暂时不支持。如果找不到问题,请随意查找问题或创建一个新问题
我已尝试更改基本测试 classes 的默认测试目录名称,如下所示:
旧:
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
}
}
但是,由于我将基础 class 测试和合同从 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 正在寻找基地 class 但没有找到。
如何告诉 Spring Cloud Contract 绑定到我的自定义 integrationTest
gradle 任务?
暂时不支持。如果找不到问题,请随意查找问题或创建一个新问题