문제

Perl Test::More 또는 Test::Simple 모듈을 사용할 때 함수 이름에 대한 규칙이 있습니까?

특히 테스트 전에 테스트 환경을 설정하고 테스트가 성공적으로 완료된 후 환경을 해체하는 데 사용되는 함수의 이름에 대해 묻고 있습니다.

건배,

도움이 되었습니까?

해결책

나는 그런 관습이 없다고 생각합니다.

이를 수행할 수 있는 유일한 방법은 리소스가 전체 파일에 대해 사용되는 경우 BEGIN/END 블록을 사용하는 것입니다.

내가 취하는 일반적인 접근 방식은 관련 테스트를 하나의 코드 블록에 넣은 다음 거기에서 변수/리소스 등을 초기화하는 것입니다.각 기능에 대해 얼마나 많은 테스트를 수행했는지 쉽게 계산할 수 있습니다.

다음과 같은 것 ...

BEGIN {
   # If you want to set some global db setting/file setting/INC changes etc
}

# Tests functionality 1...
{
     # have fun .... 
}

# Tests functionality 2...
{
     # have more fun .... 
}

END {
   # Clean up the BEGIN changes
}

다른 참고로, Perl에서 테스트하기 위해 이 내용을 읽어볼 수도 있습니다. http://perlandmac.blogspot.com/2007/08/using-perl-testsimple-and-testmore.html

다른 팁

더 많은 XUnit 스타일 테스트를 찾고 있다면 다음을 확인하세요. 테스트::클래스.그것은 제공합니다 Test(setup) 그리고 Test(teardown) 환경을 설정하고 해체하는 메소드에 대한 속성입니다.또한 계획을 처리하는 훨씬 더 좋은 방법을 제공하고(각 테스트 메서드마다 하나씩 제공할 수 있으므로 계산이 훨씬 덜 까다롭습니다) 테스트 클래스 계층을 통해 테스트를 상속할 수 있습니다.

공식적인 규칙 집합이 없다고 생각하므로 다음 예제를 살펴보는 것이 좋습니다. http://perldoc.perl.org/Test/More.html 테스트를 어떻게 작성하는지 살펴보세요.

우리는 대부분의 데이터 처리 스크립트가 Perl로 작성되었기 때문에 단위 테스트를 위해 Test::More를 더 광범위하게 사용합니다.함수 이름에 대한 특정 규칙은 없지만 Jagmal이 제안하는 것과 같은 작업, 즉 테스트를 더 작은 덩어리로 나누고 로컬에서 초기화하는 작업을 수행합니다.

우리의 경우 각 하위 테스트는 테스트 스크립트 내의 별도 함수로 캡슐화됩니다.또한 모든 하위 테스트(전체 단위 테스트)를 실행하거나 개별 하위 테스트 또는 하위 테스트 세트를 호출하여 현재 작업 중인 하위 테스트만 실행할 수 있는 프레임워크가 있습니다.

감사합니다 에스포.

관련 perldoc을 살펴봤지만 설정 및 해제 측면에 관한 실제 규칙은 없습니다.

XUnit 시리즈 테스트와는 다릅니다.

Jagmal 답변에 감사드립니다. 하지만 이름으로 무엇을 하고 있는지 명확하지 않기 때문에 설정 및 해제에 BEGIN 및 END 블록을 사용하는 것에 대해 잘 모르겠습니다.테스트당 하나의 설정 실행과 하나의 분해 실행만 갖는 명백한 문제도 있습니다.각 .t 파일당.

Test::Most를 잠깐 살펴보았는데 정말 흥미로워 보였습니다. 특히 설명 기능이 그렇습니다.고마워요 매트.

흠.BEGIN 및 END 블록 사용에 대해 좀 더 생각해 보면 테스트의 세분성을 줄여 하나의 설정과 하나의 분해만 필요하다면 이것이 좋은 해결책이 될 것이라고 생각합니다.

건배,

제가 제안하고 싶은 첫 번째 규칙은 Test::Most를 위해 Test::More를 버리는 것입니다.

Perl 테스트 스크립트는 어떤 식으로든 특별하거나 마법이 아닙니다.따라서 다른 Perl 스크립트와 똑같은 내용을 포함할 수 있습니다.

원하는 대로 루틴 이름을 지정할 수 있으며, 테스트 전, 후에, 테스트와 혼합하여 호출할 수 있습니다.

테스트 전에 초기화 코드를 얼마든지 포함할 수 있고, 테스트 후 정리 코드를 얼마든지 포함할 수 있으며, 테스트에 다른 코드를 얼마든지 혼합할 수 있습니다.

이것은 모두 CPAN 스타일 t/*.t 테스트 스크립트에 대해 이야기하고 있다고 가정합니다.제 생각에는 그렇습니다. 하지만 눈을 가늘게 뜨면 테스트 도구 확장에 관한 질문을 읽을 수 있습니다.

Ruby's Cucumber와 같은 승인 테스트에도 참여하고 싶다면 이 작은 예를 살펴보세요. http://github.com/kesor/p5-cucumber 그것은 Test::More 및 오이 스타일의 승인 테스트를 사용하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top