테스트 코드를 프로덕션 코드에 노출하지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇입니까?

PHPz
풀어 주다: 2024-02-09 21:00:10
앞으로
593명이 탐색했습니다.

테스트 코드를 프로덕션 코드에 노출하지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇입니까?

php editor Yuzi 소프트웨어 개발에서는 종종 코드를 테스트해야 합니다. 그러나 우리는 불필요한 혼란을 피하기 위해 테스트 코드를 프로덕션 환경에 노출하고 싶지 않습니다. 그렇다면 테스트 코드를 프로덕션 코드에 노출시키지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇일까요? 이는 일반적인 문제이지만 해결책이 있습니다. 이 기사에서는 이 목표를 달성하고 코드를 더욱 안전하고 안정적으로 만드는 효과적인 방법을 소개합니다.

질문 내용

TLDR: TestLogger 구조체를 logutils/test-logger_test.go에 배치하고 인증/login_tests.go에서 참조하려고 했습니다. 인증 모듈에 대한 테스트를 빌드할 때 컴파일러는 TestLogger가 선언되지 않았다고 불평합니다. 유일한 해결 방법은 test-logger_test.go의 이름을 test-logger.go로 바꾸는 것입니다. 그러나 이렇게 하면 프로덕션 코드에서 TestLogger를 참조할 위험이 있습니다.

go 테스트를 실행할 때 golang은 테스트 코드(접미사가 _test.go인 파일에 선언된 코드)를 한 모듈에서 다른 모듈로 가져오지 않는 것 같습니다. 내가 뭔가 잘못하고 있는 걸까요, 아니면 이것이 golang이 설계된 방식인가요? 해결책이 있나요?

설명하기 위한 간단한 예:

저는 "라이브러리" 모듈(il logutils라고 부르겠습니다)과 "응용 프로그램" 모듈("인증"이라고 부르겠습니다)이 있습니다. logutils 모듈에는 로거(예: FileLogger, HttpLogger)의 모든 구현 관련 기능을 다루는 자체 테스트가 있으며 모든 것이 정상입니다.

logutils 모듈은 또한 "클라이언트" 모듈(예: "인증")에서 사용할 수 있는 TestLogger를 선언하여 파일 또는 http 로깅을 설정할 필요 없이 모든 것을 올바르게 기록하는지 확인합니다. 기본적으로 Logger 인터페이스를 구현하지만 테스트가 끝날 때 확인할 수 있는 버퍼에 모든 것을 기록합니다.

따라서 "인증" 모듈은 TestLogger를 인스턴스화하는 자체 _test.go 파일을 선언할 수 있으며 모든 것이 매력처럼 작동합니다.

저를 괴롭히는 점은 TestLogger가 테스트 파일(logutils/test-logger_test.go)이 아닌 일반 프로덕션 파일(logutils/test-logger.go)에서 선언되어야 한다는 것입니다. 그렇지 않으면 인증 테스트에서 TestLogger가 다음과 같다고 불평하게 됩니다. 정의되지 않았습니다. 그러나 이렇게 하면 TestLogger가 프로덕션 코드에서 참조/사용되는 것을 막을 수 없습니다.

내가 원하는 것은 모든 logutils _test.go 파일의 코드를 모든 인증 _test.go 파일(프로덕션 .go 파일은 아님)로 가져올 수 있다는 것입니다.

통찰력/제안이 있으신가요?

편집: 오타 수정

해결 방법

이것을 사용할 수 없습니다. 아주 간단합니다. ("프로덕션 .go 파일" 같은 것은 없습니다. 테스트 코드는 "비프로덕션"이 아닙니다.)

위 내용은 테스트 코드를 프로덕션 코드에 노출하지 않고 한 모듈에서 다른 모듈로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!