Groovy에서 인수가있는 메소드를 인수없이 호출 할 수 있습니까?
Groovy:2.4.6, Gradle:2.12, Spock:1.0에서 시도하고 있습니다.
인수 첨부 메소드가 인수 없이 호출할 수 있다
Sample.groovyclass Sample {
String say(String message) {
return "Hello!"
}
}
위와 같이 하나의 인수를 취하는 메소드가 정의되었습니다.
그것을 아래와 같이 인수 없이 부르는 테스트를 적어본다.
SampleSpec.groovyclass SampleSpec extends Specification {
def "引数ありのメソッドに引数なしで呼べる"() {
given:
def sut = new Sample()
when:
def actual = sut.say()
then:
actual == "Hello!"
}
}
Java라면 컴파일 에러가 되는 곳이지만, Groovy라고 통과한다.
게다가 Red가 아니라 Green이 된다.
테스트를 Red로 만들고 싶다면
예를 들어 위의 클래스를 변경하고,
Sample.groovyclass Sample {
String say(String message) {
return "Hello! $message"
}
}
로 보면 아래와 같이 떨어진다.
인수 없이 부른 것은 null가 들어간다.
테스트 결과로부터 봐 알았지만, 인수 없이 부르면 인수의 곳은 null가 들어가는군요.
그건 그렇고, 콘솔에서,
org.spockframework.runtime.SpockComparisonFailure at SampleSpec.groovy:13
라는 느낌의 에러가 된다. 일단 컴파일 오류 취급? 되어 있다.
유사한 사례
들여다 보면 비슷한 문제를 언급하는 블로그를 발견했다.
Groovy gotcha: Passing zero arguments to a method that expects one
코멘트라든지까지 보고 있으면, もしnullがnothingってことなら、引数なし呼び出しと引数にnull渡して呼ぶのは等価だね。
같은 이야기가 나와 있다.
방심하면 눈치채지 못할 것 같았기 때문에, 시그니쳐 변경할 때는 주의합시다.
Reference
이 문제에 관하여(Groovy에서 인수가있는 메소드를 인수없이 호출 할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PoohSunny/items/a1de52653d09133de4ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class Sample {
String say(String message) {
return "Hello!"
}
}
class SampleSpec extends Specification {
def "引数ありのメソッドに引数なしで呼べる"() {
given:
def sut = new Sample()
when:
def actual = sut.say()
then:
actual == "Hello!"
}
}
예를 들어 위의 클래스를 변경하고,
Sample.groovy
class Sample {
String say(String message) {
return "Hello! $message"
}
}
로 보면 아래와 같이 떨어진다.
인수 없이 부른 것은 null가 들어간다.
테스트 결과로부터 봐 알았지만, 인수 없이 부르면 인수의 곳은 null가 들어가는군요.
그건 그렇고, 콘솔에서,
org.spockframework.runtime.SpockComparisonFailure at SampleSpec.groovy:13
라는 느낌의 에러가 된다. 일단 컴파일 오류 취급? 되어 있다.
유사한 사례
들여다 보면 비슷한 문제를 언급하는 블로그를 발견했다.
Groovy gotcha: Passing zero arguments to a method that expects one
코멘트라든지까지 보고 있으면, もしnullがnothingってことなら、引数なし呼び出しと引数にnull渡して呼ぶのは等価だね。
같은 이야기가 나와 있다.
방심하면 눈치채지 못할 것 같았기 때문에, 시그니쳐 변경할 때는 주의합시다.
Reference
이 문제에 관하여(Groovy에서 인수가있는 메소드를 인수없이 호출 할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PoohSunny/items/a1de52653d09133de4ad
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Groovy에서 인수가있는 메소드를 인수없이 호출 할 수 있습니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PoohSunny/items/a1de52653d09133de4ad텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)