问题描述
plugins {
id 'groovy'
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 11
repositories {
mavenCentral()
}
dependencies {
implementation 'org.codehaus.groovy:groovy-all:2.4.15'
testCompile group: 'junit',name: 'junit',version: '4.12'
testImplementation ('org.spockframework:spock-core:1.1-groovy-2.4') {
exclude group: 'org.codehaus.groovy'
}
}
package pattern
import groovy.transform.builder.Builder
import groovy.transform.builder.DefaultStrategy
@Builder
class HttpRequestBuilderAnnotation {
//Mandatory
private final String url
private final String httpMethod
private final String requestContentType
private final String acceptContentType
//Optional
private final String requestBody
private final List<Integer> validResponseCodes
String getUrl() {
return url
}
String getHttpMethod() {
return httpMethod
}
String getRequestContentType() {
return requestContentType
}
String getAcceptContentType() {
return acceptContentType
}
String getRequestBody() {
return requestBody
}
List<Integer> getValidResponseCodes() {
return validResponseCodes
}
}
测试案例:
package pattern
import spock.lang.Specification
class HttpRequestBuilderAnnotationSpec extends Specification {
private String url = 'https://dsd.com'
void "Instantiate HttpRequest"() {
when:
HttpRequestBuilderAnnotation httpRequestBuilderAnnotation = HttpRequestBuilderAnnotation.builder()
.url(url).build()
then:
assert httpRequestBuilderAnnotation
assert httpRequestBuilderAnnotation.getUrl() == url
}
}
错误:
groovy.lang.MissingMethodException: No signature of method: static pattern.HttpRequestBuilderAnnotation.url() is applicable for argument types: (java.lang.String) values: [https://dsd.com]
Possible solutions: use([Ljava.lang.Object;),grep(),dump(),any(),getUrl(),use(java.lang.class,groovy.lang.Closure)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at pattern.HttpRequestBuilderAnnotationSpec.Instantiate HttpRequest(HttpRequestBuilderAnnotationSpec.groovy:12)
----------注意: 如果删除了“专用”修饰符,则代码可以正常工作,但我相信按照Groovy规范,专用修饰符应按原样工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)