2012-03-02 17 views
14

Dường như thử nghiệm đơn vị đã trở thành tất cả những cơn thịnh nộ trong những ngày này và tôi biết nhiều bạn sẽ nghĩ: "Tại sao không chỉ sử dụng ngôn ngữ X với khung Y?" Nhưng tôi đang đề xuất ý tưởng này nhiều hơn như một bằng chứng về khái niệm, hoặc từ những kỷ niệm hoài cổ cho những năm trước của tôi với lập trình máy tính.Các khung kiểm thử đơn vị nào có sẵn cho bộ x86?

tôi cụ thể là làm việc trên BSD chạy trên x86 với NASM, và đã nghiền ngẫm qua việc sử dụng các kịch bản shell với mong đợi (1) để thực hiện kiểm tra đơn vị nhưng tôi muốn biết trước:

kiểm tra đơn vị gì khuôn khổ có sẵn cho các ứng dụng được viết trong lắp ráp x86?

Trả lời

3

Nếu thói quen lắp ráp của bạn có hoặc có thể được cung cấp giao diện 'C', thì mọi khung kiểm thử đơn vị C/C++ đều có thể được sử dụng.

Bạn nên di chuyển phần lớn ứng dụng của mình vào thư viện có thể được gọi từ các chương trình 'C' (tức là khung kiểm tra). Để cuối cùng xây dựng ứng dụng của bạn, bạn viết một front-end assembler mà chỉ cần gọi thư viện mới của bạn.

+0

Thành thật mà nói, đó là một thực tế tuyệt vời và khá di động. Vì vậy, có thể chỉ làm việc tốt xem xét nền tảng Unix tôi đang làm việc với. Nhưng ứng dụng vẫn sẽ phải chịu đựng cái đầu của C và tôi hy vọng có ít sự phụ thuộc nhất có thể. –

+0

Bạn có thể sắp xếp mã để mã assembly của bạn nằm trong một hoặc nhiều thư viện, trình bao bọc 'C' của bạn trong một tập hợp các thư viện song song chỉ được gọi bởi các kiểm tra, và ứng dụng của bạn chỉ gọi trực tiếp mã trình lắp ráp. – quamrana

+0

@DwightSpencer Bạn nên tách rời các phụ thuộc của mô-đun (ngay cả những phụ thuộc bên trong ứng dụng của bạn). Kết quả sẽ là các đoạn mã được gọi là thuyết bất khả tri (ngoại trừ các quy ước gọi điện không tương thích). Liên kết động cũng có thể làm cho bạn một lợi thế lớn với những ... – Powerslave

1

IMHO Khái niệm kiểm thử đơn vị không áp dụng được cho các ngôn ngữ cấp thấp như các trình lắp ráp. Thử nghiệm đơn vị liên kết với chức năng đơn vị thử nghiệm của một phương thức, lớp học, thủ tục. Theo ý kiến ​​của tôi, những thứ như vậy không tồn tại trong mã assembly - tất nhiên, có thể khai báo thủ tục trong một số assembly (có thể trong TASM và MASM), nhưng chúng không tồn tại trong mã máy.

Tuy nhiên, tôi nghĩ rằng chúng tôi vẫn có thể xem xét thử nghiệm tự động mã lắp ráp. Cá nhân, tôi đã không nghe nói về bất kỳ khuôn khổ mà sẽ cho phép điều đó.

+0

Nó cũng xuất hiện rằng co thắt/nasm có khả năng tương tự/co thắt tương tự mặc dù việc sử dụng các macro; Tôi đã đặt cùng một thực hiện stdlib cho những người cho lắp ráp được đề cập. Nhưng tôi đồng ý có thực sự cần được thử nghiệm tự động hơn cho mã lắp ráp. Đặc biệt là gần với kim loại trần. –

+0

Vâng, chế độ xử lý cấu trúc lý tưởng ví dụ là khá nhiều đối tượng-ish và các đối tượng, ở mức độ thấp, chỉ là indirections anyways, do đó, nó là khá nhiều khả thi để có khuôn khổ như vậy. Tôi chưa bao giờ nghe nói về bất kỳ mặc dù. Tin tốt là, việc tương thích C/C++ là tùy thuộc vào lập trình viên nên vào cuối ngày, một lib C++ sẽ chỉ thực hiện công việc. – Powerslave

Các vấn đề liên quan