Perl 테스팅: 계획할지 말지

잠시 동안 Perl 모듈이나 애플리케이션을 작성한다고 가정해 봅시다. 일정 수준의 소프트웨어 품질(또는 kwalitee )을 유지하고 싶기 때문에 테스트 스크립트 모음을 작성하고 있습니다. 그것들을 먼저 작성하거나(연습하기에 좋습니다test-driven development !) 애플리케이션 코드가 이미 거기에 있든, 아마도 Test::Simple , Test::More 또는 Test2::Suite 번들 중 하나에 도달하게 될 것입니다. 후자의 두 가지를 사용하면 즉시 선택에 직면하게 됩니다. 테스트 수를 계획으로 세겠습니까, 아니면 테스트 스크립트가 끝날 때 done_testing() 호출을 남기기 위해 이를 포기합니까?

두 접근 방식 모두에 대해 좋은 주장이 있습니다. 처음 시작할 때 스크립트에 얼마나 많은 테스트가 포함될지 모를 것입니다. 결국 테스트 스크립트는 이를 사용할 예제 코드를 작성하여 모듈의 인터페이스를 설계하는 데 유용한 도구가 될 수 있습니다. 탐색 코드는 모듈이나 애플리케이션이 이미 완료된 것처럼 작성되어 원하는 방식으로 테스트합니다. 이 경우 계획을 선언하지 않는 것이 완벽합니다. 끝에 done_testing()를 넣고 테스트 정의로 돌아갑니다.

물론 Test::Simple을 사용할 때는 해당 옵션이 없습니다. 너무 기본적이어서 하나의 함수( ok() )만 있고 use 실행할 때 실행할 테스트 수를 미리 선언해야 합니다. 모듈은 다음과 같습니다.

use Test::Simple tests => 23;


Test::More 또한 supports this form of plan , 또는 plan 함수를 사용하여 스크립트 또는 subtest 의 테스트 수를 명시하도록 선택할 수 있습니다. Test2에서는 plan 를 사용해야 합니다. 어느 쪽이든 계획은 일종의 메타 테스트 역할을 하여 더도 말고 덜도 말고 정확히 의도한 대로 실행했는지 확인합니다. 주어진 테스트 세트를 몇 번이나 실행해야 하는지 예측할 수 없는 상황이 있지만 다른 모든 경우에는 테스트를 "정리"하고 계획을 선언해야 합니다. 나중에 테스트를 추가하거나 제거하면 무언가가 변경되었으며 새 계획을 집계해야 할 때임을 즉시 알 수 있습니다.

다른 Perl 테스트 프레임워크는 어떻습니까? 그들은 또한 계획을 사용할 수 있습니다. 다음은 두 가지 예입니다.

  • Test::Class은 계획을 메서드의 Test attribute의 일부로 선언하고 fail_if_returned_earlyfail_if_returned_late라는 도우미 메서드를 사용하여 팔로우하지 않은 계획이 실패를 유발해야 함을 나타냅니다.

  • Test::Class::Moose“no plans needed”이라고 말하지만 속성이나 메서드 호출을 통해 계획을 선언하는 것도 지원합니다.

  • 생각? 테스트 계획을 선언하면 테스트 작성이 너무 유연하지 않습니까? 계획이 없는 것이 나쁜 행동을 조장합니까? 아래 의견에 어떻게 생각하는지 알려주십시오.

    좋은 웹페이지 즐겨찾기