Có rất nhiều biến số sẽ xác định khung thử nghiệm đơn vị tốt nhất để sử dụng trong tình huống của bạn. Một số mặt hàng có thể ảnh hưởng đến sự lựa chọn của bạn sẽ là:
- Ngôn ngữ đích.
- Những gì hỗ trợ thư viện có sẵn. ví dụ libc hoặc phiên bản cắt giảm của chúng.
- Hệ điều hành của mục tiêu. ví dụ: Không, FreeRTOS, tùy chỉnh.
Hầu hết các khung loại xUnit sẽ cung cấp một số mức chức năng cơ bản có thể hữu ích. Tôi đã sử dụng Cunit với một số thành công trong quá khứ. (gói libcunit1-dev trên Ubuntu / Debian). Hầu hết các khung sẽ yêu cầu libc có sẵn, một số sẽ yêu cầu hỗ trợ hệ điều hành bổ sung.
Một thay thế khác chỉ dài 3 dòng là Minunit .
Tôi đã tìm thấy thử nghiệm đơn vị bằng cách sử dụng vi điều khiển làm mục tiêu khá cồng kềnh vì bạn cần có khả năng trình bày một môi trường phù hợp để tải xuống các thử nghiệm, chạy chúng và sau đó lấy lại kết quả. Chỉ cần có được nền tảng tại chỗ sẽ cho phép bạn làm điều này là một nhiệm vụ lớn.
Một cách tiếp cận khác mà tôi đã thực hiện cho tôi là thử nghiệm đơn vị trên máy chủ, thực hiện lớp trừu tượng giữa trình điều khiển và mã ứng dụng. Vì bạn đang sử dụng gcc cho mục tiêu, mã cũng sẽ được biên dịch trên máy chủ.
Việc kiểm tra trên máy chủ biên dịch nói chung dễ dàng hơn nhiều khi bạn có sự hỗ trợ đầy đủ của HĐH máy chủ và tất cả các công cụ của nó. Ví dụ: khi kiểm tra trên máy chủ, tôi có một phiên bản trình điều khiển không dây bị chế giễu với giao diện giống như trình điều khiển thực chạy trên mục tiêu. Phiên bản máy chủ sử dụng các gói UDP để mô phỏng chuyển gói không dây, với trình điều khiển giả hỗ trợ khả năng bỏ gói để tôi có thể kiểm tra các giao thức của mình.
Trong sản phẩm tôi đang làm việc, một hệ điều hành có luồng đang được sử dụng, do đó, lớp trừu tượng để thử nghiệm trên hệ điều hành máy chủ đã sử dụng pthreads thay thế.
Mặc dù không hoàn hảo, bạn càng dễ dàng viết và chạy thử nghiệm, bạn càng có nhiều khả năng thực hiện nhiều trường hợp thử nghiệm hơn. Một lợi ích khác của việc chạy mã trên các nền tảng khác nhau là kiểm tra xem mã có khả dụng không. Bạn sẽ nhanh chóng nhận ra những sai lầm về cuối nếu kiến trúc mục tiêu và máy chủ khác nhau.
Bây giờ tôi hơi lạc đề, nhưng cảm thấy những ý tưởng này có thể giúp bạn lựa chọn khung kiểm tra và phương pháp kiểm tra.