2013-11-20 6 views
1

Rascal에서는 부울 함수에 test 수정자를 지정하여 테스트 함수를 정의 할 수 있습니다. 그리고 Rascal 명령 줄에 :test을 입력하여 실행하십시오. 자세한 내용은 over here을 참조하십시오.Rascal unit testing framework은 테스트 픽스처를 지원합니까?

(테스트 슈트 용) 테스트 픽스처를 어떻게 든 지정할 수 있습니까? 예를 들어 setup()teardown()과 같은 기능이 있습니까?

bool s = setup(); // is called 

int myGlobal1 = 2; 

bool setup() { 
    myGlobal1 = 1; 
} 

teardown 필요가 그 정도로 우리보다 그 비열한 훨씬 상태 기타를 가지고 있지 않기 때문에되지 않습니다 :

답변

1

당신은 모듈의 전역 변수를 포함시켜 설정 기능을 쓸 수는있는 테스트를 작성 이 전역 변수들.

@memo 
value getMyExampleData(int input) = ...; 

test bool myTest1() { 
    myData = getMyExampleData(1); 

    return /shouldContainThis x := myData; 
} 

test bool myTest2() { 
    myData = getMyExampleData(1); 

    return /shouldContainThisToo y := myData; 
} 

getMyExampleData에 대한 두 번째 호출이 정말 빨리 결과가 캐시에서 가져옵니다 때문에 될 것입니다 :

또 다른

는, 아마도 더 나은, 테스트 사이에 상태를 공유하는 방법은 @memo 기능의 사용이다. JVM의 메모리가 부족하면 캐시가 자동으로 지워집니다.

BTW에서와 같이, 또한 임의의 테스트에 대한 어떤 지원도이다

test bool myTest(int i, int j) = i + j == j + i; 

그 다음 테스트 러너 테스트 함수의 매개 변수에 대한 임의의 입력을 많이 생성 할 것이다. 일부 태그를 통해 입력 생성에도 영향을 미칠 수 있습니다. 관심이 있다면 알려주십시오.

+0

'@ memo '가 정확히 무엇에 관한 (온라인) 정보가 더 이상 있습니까? 월요일에 무작위 테스트 지원 태그에 대해 질문 할 것입니다. – Sander

+0

@emo를 아직 문서화했다고 생각하지 않습니다. 그러나 그것에 대해 많이 알지 않습니다. 캐시의 결과는 함수의 결과를 캐시하는 것입니다. 동일한 매개 변수가 주어지면 다시 계산하는 대신 캐시에서 결과를 생성합니다. Java GC가 더 많은 메모리를 필요로 할 때 캐쉬가 해제됩니다 (예 : – jurgenv

+1

은 주석에주의해야 함 : -). Rascal 주석은 평등을 결정할 때 고려되지 않습니다. 이것은'@ memo '에도 적용됩니다. 따라서 주석에서 값이 다른 경우'@ memo'를 사용하지 마십시오. 상처를 입을 수 있습니다. –