다음과 같은 구조의 프로젝트가 있습니다:
으아악이것은 작곡가.json에서 psr-4 자동 로딩을 정의하는 방법입니다:
으아악이것은 내 Guitar.php입니다:
으아악이것은 내 ToString.php입니다:
으아악이것은 내 Type.php입니다:
으아악이것은 내 GuitarTest.php입니다:
으아악하지만 테스트를 실행하면 다음 오류가 발생합니다.
으아악무엇이 문제인가요? 어떻게 해결하나요?
P粉7648364482024-03-27 12:15:40
이것은 PSR-4 구성의 Composer 자동 로더에 관한 질문입니다.
require_once
통화는 되지 않습니다. 이는 자동 로더이며 클래스 파일에는 자동 로더가 필요하지 않습니다. 의심스러운 경우 자동 로더 구성을 테스트해 보세요.
다음 단계:
해당 require_once
전화를 제거하세요. 전화는 주의를 산만하게 하고 문제 해결을 방해할 뿐입니다. 자동 로드 구성이 유효하거나 유효하지 않습니다. 포함 지점을 다른 파일에 분산시키는 경우 더 많은 유지 관리가 필요하지만 반드시 그렇게 할 필요는 없습니다.
문제가 있으므로 测试
모듈을 재구성하여 자동 로더 구성 테스트를 도입하세요.
tests
移至 tests/unit
에서 콘텐츠를 이동하고 단위 테스트를 위한 전용 디렉터리를 제공합니다.
생성됨 tests/php
子文件夹并在其中创建 autoloading.php
文件。该文件夹用于 PHP 测试,即直接使用 PHP 执行它们(例如 phptests/php/autoloading.php
). 파일 내용:
참조:
자동 로더 구성 테스트를 실행하여 파일을 로드할 수 있는지 확인하세요
으아악(아무것도 인쇄할 수 없지만 무엇이든 인쇄할 수 있습니다. 중요한 것은 파일을 찾을 수 없거나 유사한 유형의 오류가 아닌 실행된다는 것입니다.
이 방법으로 PHP 파일을 실행할 수 있다면 이를 Composer 구성에 바인딩하세요. 이를 통해 오토로더 구성을 테스트할 수 있습니다.
새 스크립트를 composer.json
구성에 추가하세요:
참조:
테스트해 보세요:
으아악(출력되지 않습니다. 여기에 어떻게 보이는지 보여주기 위해 몇 가지 경고를 추가했습니다)
이렇게 하면 새로운 자동 로드 구성 테스트가 실행되고 경고 모드에서 어설션이 활성화됩니다. 즉, ***_exists() 함수가 false를 반환하면 오류가 표시됩니다. 이는 인터페이스/열거/클래스를 로드할 수 없음을 의미합니다.
발견되지 않은 예외의 경우 -dassert.exception=0
更改为 -dassert.exception=1
(0
-> <代码>1代码>)。然后测试将以非零代码退出(状态 255
를 통과할 수 있습니다.
이것이 당신이 원하는 것입니다 -dassert.exception=0
更改为 -dassert.exception=1
并再次保存 composer.json
.
그런 다음 오토로더를 덤프하는 Composer 명령을 사용하여 오토로더를 테스트할 수 있습니다.
作曲家转储自动加载
作曲家安装
作曲家更新
즐거운 테스트 되세요.
적절한 테스트, phpunit이 아직 실행 중인지 확인할 수도 있습니다:
으아아아다시 테스트해 보세요. 범인을 찾아 모든 것이 정상으로 돌아오면 단일 작성기 스크립트를 사용하여 모든 테스트를 실행할 수 있습니다.
Common은 test
:
글을 쓸 필요도 없고 composer run-script test
,只需 composer test
항상 그것만으로도 충분합니다:
(이 예제 출력에서는 phpunit 테스트를 구성하지 않았지만 이해가 되실 겁니다)
그럼 이건 어떤 테스트인가요? 글쎄요, 저는 이것을 구성 테스트라고 부릅니다. 이것은 단지 몇 가지 PHP 내용을 확인할 수 있는 간단한 확인일 뿐입니다. 그러한 테스트를 많이 추가하지 말고 테스트 계획을 작게 유지하십시오. 이를 사용하여 프로젝트를 구성할 때 직면하는 문제를 해결할 수 있습니다. 최대 1년 동안 보관하고 오류가 없다면 삭제를 고려해 보세요.
그러나 이 예에서는 일부 수표를 구성된 위치에 더 가깝게 이동하고 함께 묶는 방법을 보여줍니다. 종료 상태가 0이 아닌 경우 Composer는 전체 프로세스를 실패하게 됩니다.
또한 메시지가 표시되도록 각 작성자 스크립트에 설명을 추가할 수 있습니다.
으아아아 으아아아(참조: 사용자 정의 설명 - 작성기 스크립트 문서 )