PHP 테스트를 작성할 때, 특히 응용 프로그램이 특정 운영 체제 기능 (예 : 경로 분리기, 파일 시스템 권한, 환경 변수 등)에 의존 할 때 다른 운영 체제 환경을 모방하는 것이 필수적입니다. PHPUnit은 개발자가 포괄적 인 테스트를 수행 할 수 있도록 다양한 운영 체제 환경을 시뮬레이션하는 몇 가지 방법을 제공하는 강력한 테스트 프레임 워크입니다.
대부분의 경우 PHP 프로그램은 경로 분리기의 Windows와 Linux의 차이와 같은 운영 체제의 동작에 의존합니다 (Windows는 \를 사용하는 동안 Linux는 / ). 프로그램이 다른 운영 체제에서 일관되게 수행되지 않으면 배포 또는 런타임 중에 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 PHPUNIT를 사용하여 테스트를 위해 다양한 운영 체제 환경을 시뮬레이션 할 수 있습니다.
먼저 PHPUnit을 올바르게 설치하고 구성했는지 확인하십시오. 설치하지 않은 경우 작곡가를 사용하여 설치할 수 있습니다.
composer require --dev phpunit/phpunit
그런 다음 프로젝트에서 SystemTest.php 와 같은 테스트 파일을 만듭니다.
PHP는 다양한 운영 체제 환경을 시뮬레이션하는 데 사용할 수있는 $ _server 및 $ _env 와 같은 글로벌 변수를 제공합니다. phpunit의 setup () 메소드를 통해 각 테스트 전에 이러한 환경 변수를 설정할 수 있습니다. 예는 다음과 같습니다.
use PHPUnit\Framework\TestCase;
class SystemTest extends TestCase
{
protected function setUp(): void
{
// 시뮬레이션 Windows 환경
$_SERVER['OS'] = 'Windows_NT';
$_ENV['PATH'] = 'C:\Program Files\PHP';
// 시뮬레이션 Linux 환경
// $_SERVER['OS'] = 'Linux';
// $_ENV['PATH'] = '/usr/local/bin/php';
}
public function testPathSeparator()
{
// 현재 운영 체제에서 사용하는 경로 분리기 결정
if ($_SERVER['OS'] === 'Windows_NT') {
$this->assertEquals(DIRECTORY_SEPARATOR, '\\');
} else {
$this->assertEquals(DIRECTORY_SEPARATOR, '/');
}
}
public function testFilePath()
{
// 테스트 운영 체제 별 파일 경로
$filePath = $_SERVER['OS'] === 'Windows_NT' ? 'C:\\Program Files\\PHP\\php.exe' : '/usr/local/bin/php';
$this->assertFileExists($filePath);
}
}
$ _server 및 $ _env 변수를 모방하는 것 외에도 시스템 경로, 권한 등을 수정하여 운영 체제의 동작을 시뮬레이션 할 수도 있습니다. 예를 들어, 애플리케이션에 파일 감지 권한이 필요한 경우 CHMOD 및 터치를 사용하여 서로 다른 운영 체제에 대한 다른 파일 권한을 시뮬레이션 할 수 있습니다.
테스트 파일을 구성한 후 테스트를 위해 PhPunit을 실행할 수 있습니다. 다음 명령을 사용하여 명령 줄에서 테스트를 실행할 수 있습니다.
vendor/bin/phpunit tests/SystemTest.php
이렇게하면 모의 환경을 기반으로 테스트를 수행하여 응용 프로그램이 다른 운영 체제에서 일관되게 작동하도록합니다.
PHPUnit을 사용하면 다양한 운영 체제 환경을 쉽게 시뮬레이션하여 PHP 프로그램의 호환성을 테스트 할 수 있습니다. 적절한 환경 변수를 설정하고 운영 체제 별 동작을 시뮬레이션함으로써 프로그램이 여러 플랫폼에서 예상대로 수행되도록 할 수 있습니다. 이 접근법은 특히 플랫폼 간 지원이 필요한 애플리케이션에 적합하며 다른 운영 체제 간의 불일치를 피할 수 있습니다.
마치다