PHPUnit袖珍指南之自动测试
最好的程序员也会犯错误。好程序员和差程序员的区别在于:好程序员能通过测试尽可能的发现错误。你越快测试错误,你就越快发现它们,发现和修正的成本就越低。这解释了为什么只在软件发布前才测试的做法为什么问题那么多。大多数错误根本就没有发现过,修正发现的错误是那么的高,以至于你不得不根据优先级来决定只修正那些错误,因为你根本就承受不起全部修正的费用。
相比你正在使用的方法,采用PHPUnit进行测试并不是一个全然不同的东西。它们只是方法不同。两者之间的不同在于,检查程序行为是否符合正确是通过一批可以自动测试的代码片断来进行的。这些代码片断叫做单元测试。 在这一部分,我们先基于打印的测试代码进行自动测试。假设我们要测试PHP的内建数组Array。需要测试之一是函数sizeof(),对任何新创建的数组,sizeof()函数应该返回 0。当我们加入一个新数组成员,sizeof()应该返回1。例1显示了我们想测试什么。
例1. 测试数组和sizeof()
$fixture = Array( );
// $fixture应该为空。
$fixture[] = "element";
// $fixture应该包含一个数组成员。
?>
最简单的测试方法是在加入数组成员前后打印sizeof()的运算结果,如果返回0和1,说明Array和sizeof()运行正常。
例2. 采用打印语句测试Array和sizeof()
$fixture = Array( );
print sizeof($fixture) . "\n";
$fixture[] = "element";
print sizeof($fixture) . "\n";
?>
0
1
现在,我们让测试程序从需要手工解释变为自动运行。在例3中,我们比较了期望值和实际值,如果相等就打印ok。如果我们发现有的结果不是ok,我们就知道有问题了。
例3. 比较Array和sizeof()的期望值和实际值
$fixture = Array( );
print sizeof($fixture) == 0 ? "ok\n" : "not ok\n";
$fixture[] = "element";
print sizeof($fixture) == 1 ? "ok\n" : "not ok\n";
?>
ok
ok
我们现在引入一个新的要素,如果期望值和实际值不同,我们就抛出一个异常。这样我们的输出就更简单了。如果测试成功,什么也不做,如果有一个未处理异常,我们知道有问题了。
例4.使用断言函数来测试Array和sizeof()
$fixture = Array( );
assertTrue(sizeof($fixture) = = 0);
$fixture[] = "element";
assertTrue(sizeof($fixture) = = 1);
function assertTrue($condition) {
if (!$condition) {
throw new Exception("Assertion failed.");
}
}
?>
现在测试完全自动化了。和我们第一个版本不同,这个版本使得测试完全自动化了。
使用自动测试的目的是尽可能少的犯错误。尽管你的代码还不是完美的,用优良的自动测试,你会发现错误会明显减少。自动测试给了你对代码公正的信心。有这个信心,你可以在设计上有大胆的飞越,和你的团队伙伴关系更好,改善你和客户之间的关系,每天安心入睡,因为你可以证明由于你的努力,系统变得更好了。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











요소를 수정하는 방법: 1. 요소의 배경색을 수정합니다. 2. 요소의 글꼴 크기를 수정합니다. 4. 요소의 글꼴 스타일을 수정합니다. . 요소의 수평 정렬을 수정합니다. 자세한 소개: 1. 요소의 배경색을 수정합니다. 구문은 "document.getElementById("myElement").style.BackgroundColor = "red";"입니다. 2. 요소의 글꼴 크기 등을 수정합니다.

제목: Array.Sort 함수를 사용하여 C#에서 배열을 정렬하는 예 텍스트: C#에서는 배열이 일반적으로 사용되는 데이터 구조이므로 배열 정렬 작업이 필요한 경우가 많습니다. C#에서는 배열을 편리하게 정렬할 수 있는 Sort 메서드가 있는 Array 클래스를 제공합니다. 이 문서에서는 C#에서 Array.Sort 함수를 사용하여 배열을 정렬하는 방법을 보여주고 구체적인 코드 예제를 제공합니다. 먼저 Array.Sort 함수의 기본 사용법을 이해해야 합니다. 배열.그래서

sizeof()로 얻은 구조 유형 요소의 크기는 각 개별 멤버의 크기와 항상 같지는 않습니다. 때때로 컴파일러는 정렬 문제를 피하기 위해 약간의 패딩을 추가합니다. 따라서 치수가 변경될 수 있습니다. 구조체 멤버 뒤에 더 큰 크기의 멤버가 있거나 구조체의 끝에 있을 때 패딩이 추가됩니다. 컴파일러마다 정렬 제약 조건이 다릅니다. C 표준에서 전체 정렬 구조는 구현에 따라 다릅니다. 사례 1 이 경우 이중 z의 길이는 8바이트로 x(4바이트)보다 큽니다. 따라서 또 다른 4바이트의 패딩이 추가됩니다. 추가적으로, short 타입 데이터 y는 메모리 공간이 2바이트이므로 패딩으로 6바이트가 추가됩니다. 샘플 코드 #include<stdio.h>structmyS

PHP로 프로그래밍할 때 배열을 병합해야 하는 경우가 종종 있습니다. PHP는 배열 병합을 완료하기 위해 array_merge() 함수를 제공하지만, 배열에 동일한 키가 존재할 경우 이 함수는 원래 값을 덮어씁니다. 이 문제를 해결하기 위해 PHP는 배열을 병합하고 동일한 키의 값을 유지할 수 있는 array_merge_recursive() 함수도 언어에 제공하여 프로그램 설계를 더욱 유연하게 만듭니다. array_merge

PHP에는 배열 작업을 더욱 편리하고 빠르게 만들어주는 강력한 배열 함수가 많이 있습니다. 두 배열을 연관 배열로 결합해야 하는 경우 PHP의 array_combine 함수를 사용하여 이 작업을 수행할 수 있습니다. 이 함수는 실제로 한 배열의 키를 다른 배열의 값으로 새로운 연관 배열로 결합하는 데 사용됩니다. 다음으로 PHP에서 array_combine 함수를 사용하여 두 배열을 연관 배열로 결합하는 방법을 설명하겠습니다. array_comb에 대해 알아보기

PHP 프로그래밍에서 배열은 많은 양의 데이터를 쉽게 처리할 수 있는 매우 중요한 데이터 구조입니다. PHP는 많은 배열 관련 함수를 제공하며 array_fill()은 그 중 하나입니다. 이 기사에서는 array_fill() 함수의 사용법과 실제 응용에 대한 몇 가지 팁을 자세히 소개합니다. 1. array_fill() 함수 개요 array_fill() 함수의 함수는 지정된 길이의 동일한 값으로 구성된 배열을 생성하는 것입니다. 구체적으로 이 함수의 구문은 다음과 같습니다.

Python의 배열 모듈은 미리 정의된 배열이므로 표준 목록보다 메모리 공간을 훨씬 적게 차지하고 추가, 삭제, 인덱싱, 슬라이싱과 같은 요소 수준 작업을 빠르게 수행할 수도 있습니다. 또한, 배열의 모든 요소는 동일한 타입이므로 평균, 최대, 최소값 계산 등 배열이 제공하는 효율적인 수치연산 기능을 사용할 수 있습니다. 또한, 배열 모듈은 배열 객체를 바이너리 파일에 직접 쓰고 읽는 것을 지원하므로 대량의 수치 데이터를 처리할 때 더욱 효율적입니다. 따라서 대량의 동종 데이터를 처리해야 하는 경우 Python의 배열 모듈을 사용하여 코드의 실행 효율성을 최적화하는 것을 고려할 수 있습니다. 어레이 모듈을 사용하려면 먼저 다음을 수행해야 합니다.

PHP 프로그래밍에서 배열은 자주 사용되는 데이터 유형입니다. array_change_key_case() 함수를 포함하여 꽤 많은 배열 작업 함수도 있습니다. 이 함수는 데이터 처리를 용이하게 하기 위해 배열의 키 이름 대소문자를 변환할 수 있습니다. 이 기사에서는 PHP에서 array_change_key_case() 함수를 사용하는 방법을 소개합니다. 1. 함수 구문 및 매개변수 array_change_ke
