Laravel được xây dựng với mục đích thử nghiệm. Trên thực tế, hỗ trợ kiểm tra với PHPUnit được cung cấp ngay lập tức và tệp
php artisan make:test UserTest --unit
0 đã được thiết lập cho ứng dụng của bạn. Khung này cũng cung cấp các phương thức trợ giúp thuận tiện cho phép bạn kiểm tra rõ ràng các ứng dụng của mìnhTheo mặc định, thư mục
php artisan make:test UserTest --unit
1 của ứng dụng chứa hai thư mục. php artisan make:test UserTest --unit
2 và php artisan make:test UserTest --unit
3. Bài kiểm tra đơn vị là bài kiểm tra tập trung vào một phần rất nhỏ, riêng biệt trong mã của bạn. Trên thực tế, hầu hết các bài kiểm tra đơn vị có thể tập trung vào một phương pháp duy nhất. Các kiểm tra trong thư mục kiểm tra "Đơn vị" của bạn không khởi động ứng dụng Laravel của bạn và do đó không thể truy cập cơ sở dữ liệu của ứng dụng hoặc các dịch vụ khung khácCác bài kiểm tra tính năng có thể kiểm tra phần lớn mã của bạn, bao gồm cách một số đối tượng tương tác với nhau hoặc thậm chí là một yêu cầu HTTP đầy đủ tới một điểm cuối JSON. Nói chung, hầu hết các bài kiểm tra của bạn phải là bài kiểm tra tính năng. Các loại thử nghiệm này mang lại sự tự tin nhất rằng toàn bộ hệ thống của bạn đang hoạt động như dự kiến
Tệp
php artisan make:test UserTest --unit
4 được cung cấp trong cả thư mục kiểm tra php artisan make:test UserTest --unit
2 và php artisan make:test UserTest --unit
3. Sau khi cài đặt một ứng dụng Laravel mới, hãy thực hiện các lệnh php artisan make:test UserTest --unit
7 hoặc php artisan make:test UserTest --unit
8 để chạy thử nghiệm của bạnMôi trường
Khi chạy thử nghiệm, Laravel sẽ tự động đặt giá trị thành
php artisan make:test UserTest --unit
9 do các biến môi trường được xác định trong tệp php artisan make:test UserTest --unit
0. Laravel cũng tự động định cấu hình phiên và bộ đệm cho trình điều khiển php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
1 trong khi thử nghiệm, nghĩa là sẽ không có dữ liệu phiên hoặc bộ đệm nào được duy trì trong khi thử nghiệmBạn có thể tự do xác định các giá trị cấu hình môi trường thử nghiệm khác nếu cần. Các biến môi trường
php artisan make:test UserTest --unit
9 có thể được định cấu hình trong tệp php artisan make:test UserTest --unit
0 của ứng dụng của bạn, nhưng hãy đảm bảo xóa bộ đệm cấu hình của bạn bằng lệnh php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
4 Artisan trước khi chạy thử nghiệm của bạnTệp Môi trường php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
5
php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
Ngoài ra, bạn có thể tạo tệp
php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
5 trong thư mục gốc của dự án của mình. Tệp này sẽ được sử dụng thay cho tệp php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
7 khi chạy thử nghiệm PHPUnit hoặc thực thi lệnh Artisan với tùy chọn php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
8Tính cách php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
9
php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
Laravel bao gồm một đặc điểm
php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
9 được áp dụng cho lớp cơ sở use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
1 của ứng dụng của bạn. Đặc điểm này chứa một phương pháp use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
2 khởi động ứng dụng Laravel trước khi chạy thử nghiệm của bạn. Điều quan trọng là bạn phải để đặc điểm này ở vị trí ban đầu vì một số tính năng, chẳng hạn như tính năng kiểm tra song song của Laravel, phụ thuộc vào nóTạo bài kiểm tra
Để tạo một trường hợp thử nghiệm mới, hãy sử dụng lệnh
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
3 Artisan. Theo mặc định, các bài kiểm tra sẽ được đặt trong thư mục use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
4php artisan make:test UserTest
Nếu bạn muốn tạo một bài kiểm tra trong thư mục
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
5, bạn có thể sử dụng tùy chọn use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
6 khi thực hiện lệnh use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
3php artisan make:test UserTest --unit
Nếu bạn muốn tạo một bài kiểm tra Pest PHP, bạn có thể cung cấp tùy chọn
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
8 cho lệnh use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
3php artisan make:test UserTest --pest
php artisan make:test UserTest --unit --pest
Ghi chú
Cuống thử nghiệm có thể được tùy chỉnh bằng cách sử dụng
Khi thử nghiệm đã được tạo, bạn có thể xác định các phương thức thử nghiệm như bình thường bằng cách sử dụng PHPUnit. Để chạy thử nghiệm của bạn, hãy thực hiện lệnh
php artisan make:test UserTest --unit
7 hoặc php artisan make:test UserTest --unit
8 từ thiết bị đầu cuối của bạnuse PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
public function test_basic_test[]
Cảnh báo
Nếu bạn định nghĩa các phương thức2 /
php artisan test --testsuite=Feature --stop-on-failure
3 của riêng mình trong một lớp kiểm tra, hãy đảm bảo gọi các phương thức
php artisan test --testsuite=Feature --stop-on-failure
4 /
php artisan test --testsuite=Feature --stop-on-failure
5 tương ứng trên lớp cha
php artisan test --testsuite=Feature --stop-on-failure
Chạy thử nghiệm
Như đã đề cập trước đây, khi bạn đã viết bài kiểm tra, bạn có thể chạy chúng bằng cách sử dụng
php artisan test --testsuite=Feature --stop-on-failure
6Ngoài lệnh
php artisan test --testsuite=Feature --stop-on-failure
6, bạn có thể sử dụng lệnh php artisan test --testsuite=Feature --stop-on-failure
8 Artisan để chạy thử nghiệm của mình. Trình chạy thử Artisan cung cấp các báo cáo thử nghiệm chi tiết để dễ dàng phát triển và gỡ lỗiBất kỳ đối số nào có thể được truyền cho lệnh
php artisan test --testsuite=Feature --stop-on-failure
6 cũng có thể được truyền cho lệnh Artisan php artisan test --testsuite=Feature --stop-on-failure
8php artisan test --testsuite=Feature --stop-on-failure
Chạy thử nghiệm song song
Theo mặc định, Laravel và PHPUnit thực hiện tuần tự các bài kiểm tra của bạn trong một quy trình duy nhất. Tuy nhiên, bạn có thể giảm đáng kể lượng thời gian chạy thử nghiệm của mình bằng cách chạy thử nghiệm đồng thời trên nhiều quy trình. Để bắt đầu, hãy đảm bảo ứng dụng của bạn phụ thuộc vào phiên bản
php artisan test --parallel --processes=4
1 hoặc cao hơn của gói php artisan test --parallel --processes=4
2. Sau đó, bao gồm tùy chọn php artisan test --parallel --processes=4
3 khi thực hiện lệnh php artisan test --testsuite=Feature --stop-on-failure
8 ArtisanTheo mặc định, Laravel sẽ tạo bao nhiêu quy trình tùy theo số lõi CPU có sẵn trên máy của bạn. Tuy nhiên, bạn có thể điều chỉnh số lượng quy trình bằng cách sử dụng tùy chọn
php artisan test --parallel --processes=4
5php artisan test --parallel --processes=4
Cảnh báo
Khi chạy thử nghiệm song song, một số tùy chọn PHPUnit [chẳng hạn như6] có thể không khả dụng
php artisan test --parallel --processes=4
Kiểm tra song song & Cơ sở dữ liệu
Miễn là bạn đã định cấu hình kết nối cơ sở dữ liệu chính, Laravel sẽ tự động xử lý việc tạo và di chuyển cơ sở dữ liệu thử nghiệm cho từng quy trình song song đang chạy thử nghiệm của bạn. Cơ sở dữ liệu thử nghiệm sẽ được thêm vào một mã thông báo quy trình duy nhất cho mỗi quy trình. Ví dụ: nếu bạn có hai quy trình kiểm tra song song, Laravel sẽ tạo và sử dụng cơ sở dữ liệu kiểm tra
php artisan test --parallel --processes=4
7 và php artisan test --parallel --processes=4
8Theo mặc định, cơ sở dữ liệu kiểm tra vẫn tồn tại giữa các lần gọi lệnh
php artisan test --testsuite=Feature --stop-on-failure
8 Artisan để chúng có thể được sử dụng lại bởi các lần gọi php artisan test --testsuite=Feature --stop-on-failure
8 tiếp theo. Tuy nhiên, bạn có thể tạo lại chúng bằng tùy chọn php artisan test --parallel --recreate-databases
1php artisan test --parallel --recreate-databases
Móc kiểm tra song song
Đôi khi, bạn có thể cần chuẩn bị một số tài nguyên nhất định được sử dụng bởi các thử nghiệm của ứng dụng để chúng có thể được sử dụng an toàn bởi nhiều quy trình thử nghiệm
Sử dụng mặt tiền
php artisan test --parallel --recreate-databases
2, bạn có thể chỉ định mã sẽ được thực thi trên php artisan test --testsuite=Feature --stop-on-failure
2 và php artisan test --testsuite=Feature --stop-on-failure
3 của quy trình hoặc trường hợp thử nghiệm. Các bao đóng đã cho nhận các biến php artisan test --parallel --recreate-databases
5 và php artisan test --parallel --recreate-databases
6 chứa mã thông báo quy trình và trường hợp thử nghiệm hiện tại, tương ứnguse Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\ParallelTesting;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
* Bootstrap any application services.
ParallelTesting::setUpProcess[function [$token] {
ParallelTesting::setUpTestCase[function [$token, $testCase] {
// Executed when a test database is created...
ParallelTesting::setUpTestDatabase[function [$database, $token] {
Artisan::call['db:seed'];
ParallelTesting::tearDownTestCase[function [$token, $testCase] {
ParallelTesting::tearDownProcess[function [$token] {
Truy cập mã thông báo kiểm tra song song
Nếu bạn muốn truy cập "mã thông báo" của quy trình song song hiện tại từ bất kỳ vị trí nào khác trong mã kiểm tra ứng dụng của mình, bạn có thể sử dụng phương pháp
php artisan test --parallel --recreate-databases
7. Mã thông báo này là mã định danh chuỗi, duy nhất cho một quy trình kiểm tra riêng lẻ và có thể được sử dụng để phân đoạn tài nguyên trên các quy trình kiểm tra song song. Ví dụ: Laravel tự động thêm mã thông báo này vào cuối cơ sở dữ liệu thử nghiệm được tạo bởi mỗi quy trình thử nghiệm song song$token = ParallelTesting::token[];
Báo cáo phạm vi kiểm tra
Cảnh báo
Tính năng này yêu cầu Xdebug hoặc PCOV
Khi chạy thử nghiệm ứng dụng của mình, bạn có thể muốn xác định xem các trường hợp thử nghiệm của mình có thực sự bao gồm mã ứng dụng hay không và lượng mã ứng dụng được sử dụng khi chạy thử nghiệm của bạn. Để thực hiện điều này, bạn có thể cung cấp tùy chọn
php artisan test --parallel --recreate-databases
8 khi gọi lệnh php artisan test --testsuite=Feature --stop-on-failure
8Thực thi ngưỡng bảo hiểm tối thiểu
Bạn có thể sử dụng tùy chọn
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\ParallelTesting;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
* Bootstrap any application services.
ParallelTesting::setUpProcess[function [$token] {
ParallelTesting::setUpTestCase[function [$token, $testCase] {
// Executed when a test database is created...
ParallelTesting::setUpTestDatabase[function [$database, $token] {
Artisan::call['db:seed'];
ParallelTesting::tearDownTestCase[function [$token, $testCase] {
ParallelTesting::tearDownProcess[function [$token] {
0 để xác định ngưỡng phạm vi kiểm tra tối thiểu cho ứng dụng của mình. Bộ kiểm tra sẽ thất bại nếu ngưỡng này không được đáp ứng