누구든지 내가 JMeter의 노출 된 소품 Hashtable에 그루비 클로저를 저장할 수 있지만 그루비 함수가 아닌 이유를 알고 있습니까?
테스트 계획, 스레드 그룹, 스크립트 언어 Groovy 3.0.3을 사용하는 JSR223 샘플러에 다음과 같은 최소한의 실패 예제가 있습니다 (Jmeter GUI의 "스크립트"상자에 붙여 넣거나 파일 이름에서 참조 할 때 둘 다 실패 함) "test.groovy") :
def bern = { p -> Math.random() < p }
props.put("bern", bern)
closure = props.get("bern")
log.warn("props closure call: " + closure(1.0))
def bernoulli (double p) {
Math.random() < p
}
props.put("bernoulli", bernoulli)
funct = props.get(bernoulli)
log.warn("props function call: " + funct(1.0))
다음은 내 예상 출력입니다 (JMeter 로그 뷰어에서).
props closure call: true
props function call: true
내가 얻는 로그 출력은 다음과 같습니다.
props closure call: true
...text
Problem in JSR223 script JSR223 Sampler, message: javax.script.ScriptExecution:
groovy.lang.MissingPropertyException: No such property bernoulli for class:
Script<jmeter generated groovy script number> ...
props
다음 구문 을 사용하여 함수를에 저장할 수 있습니다 .
// def props = [:]
def bernoulli (double p) {
Math.random() < p
}
props.put("bernoulli", this.&bernoulli)
funct = props.get("bernoulli")
println funct(1.0)
표현식 은 메소드 포인터 연산자를 사용하여 함수를 클로저 this.&bernoulli
로 변환합니다 .bernoulli
.&
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다