2010-05-24 23 views
12

Tôi muốn biết nếu nó là "ok" để viết một bài kiểm tra mà không có bất kỳ "khẳng định" trong đó. Vì vậy, kiểm tra sẽ thất bại chỉ khi một ngoại lệ/lỗi đã xảy ra.Tôi có thể viết một bài kiểm tra mà không có bất kỳ khẳng định nào trong đó không?

Ví dụ: như thử nghiệm có truy vấn chọn đơn giản, để đảm bảo rằng cấu hình cơ sở dữ liệu là đúng. Vì vậy, khi tôi thay đổi một số cấu hình db, tôi chạy lại kiểm tra này và kiểm tra xem cấu hình có đúng không. ?

Cảm ơn!

+0

@Kyle Rozendo: JUnit có thể (và thường * *) được sử dụng để thử nghiệm đơn vị nhiều hơn. Bạn đã thêm một số thẻ "unit-testing" cho câu hỏi này nhưng tôi thực sự không chắc chắn rằng một kiểm tra xác minh một số "cấu hình db" (OP đã viết * vì vậy khi tôi thay đổi một số cấu hình db, tôi chạy lại kiểm tra này và kiểm tra xem cấu hình có đúng *) thực sự là một thử nghiệm đơn vị hay không. Không có nơi nào mà OP đề cập đến việc kiểm thử đơn vị và tôi sẽ không gọi thử nghiệm này là "kiểm thử đơn vị". – SyntaxT3rr0r

+0

@Web - "Thử nghiệm đơn vị là phương pháp xác minh và xác thực phần mềm trong đó một lập trình viên kiểm tra xem các đơn vị mã nguồn riêng lẻ có phù hợp để sử dụng hay không."Tôi không đồng ý :) –

+2

Loại thử nghiệm này đôi khi được gọi là" thử nghiệm khói ".Nếu khói xuất hiện, thử nghiệm không thành công –

Trả lời

15

Điều này hoàn toàn hợp lệ để đảm bảo chạy thử nghiệm đơn vị mà không gặp phải ngoại lệ.

Theo đề xuất của Matt B, hãy đảm bảo ghi lại nội dung thử nghiệm thực sự đang thử nghiệm để rõ ràng và chính xác.

+4

chỉ cần đảm bảo tài liệu thử nghiệm thực sự là thử nghiệm rõ ràng –

+0

cảm ơn! @matt Có, tôi sẽ! :) (Ví dụ tôi đã yêu cầu defenitely rằng) – stratwine

+0

Để "chắc chắn", bạn phải khẳng định rằng "x" có "cho chắc chắn -> giá trị này-hoặc-nhà nước-hoặc- bất cứ điều gì ", kiểm tra mà không khẳng định có ý nghĩa: từ 0 đến không có –

2

Thử nghiệm là một cuộc thảo luận chủ quan thực sự. Một số người sẽ nói không, bạn nên luôn luôn có cú pháp AAA. Cá nhân tôi đã viết các bài kiểm tra làm những điều rất giống với những gì bạn nói về vì vậy tôi muốn nói, chắc chắn đi trước - nếu nó giúp bạn xây dựng một ứng dụng ổn định hơn thì tại sao không.

Ví dụ trong NUnit tôi xem xét [Loại ExpectedExceptionof (XXXX)] tương đương về mặt logic với một Assert.

Cũng trong một số thử nghiệm, bạn có thể không khẳng định bất cứ điều gì nhưng mong đợi một thứ tự thực hiện cụ thể thông qua Mocks và Expects.

+0

cảm ơn! Có. Tôi được nhắc nhở về việc xem một số hướng dẫn JMock mà không có khẳng định nhưng Kỳ vọng. Sẽ khám phá về điều đó! – stratwine

4

Khi @Kyle lưu ý, trường hợp thử nghiệm của bạn hợp lệ. Trong thực tế, điều ngược lại cũng sẽ là hợp lệ: khi bạn viết một trường hợp thử nghiệm để xác nhận rằng một cuộc gọi nhất định với (các) tham số cụ thể dẫn đến một ngoại lệ.

3

Chắc chắn bạn có thể làm điều đó. Nó cũng hoàn toàn tốt để viết một bài kiểm tra mà không có xác nhận, nơi kết quả mong đợi là một ngoại lệ. Tôi biết testng sẽ cho phép bạn chỉ định một ngoại lệ cần được ném và thử nghiệm sẽ thất bại nếu ngoại lệ dự kiến ​​không được ném.

0

Bạn hoàn toàn có thể chấp nhận viết bài kiểm tra đơn vị không có bất kỳ xác nhận nào. Bạn có thể thực hiện việc này cho:

  • Kiểm tra trường hợp kết thúc mà không có ngoại lệ. Trong trường hợp này, nếu bạn có thể, nó là tốt đẹp để ăn mặc thử nghiệm với các loại hình cụ thể của trường hợp ngoại lệ, như trong [ExpectedException (MyException)].

  • Thử nghiệm tính năng ở đó. Thậm chí không có khả năng là thử nghiệm có thể tạo ra ngoại lệ, bạn có thể muốn thực hiện kiểm tra này nếu không có ai đó quyết định xóa tính năng đó. Nếu thử nghiệm sử dụng một phương pháp và phương pháp được loại bỏ, kiểm tra sẽ chỉ đơn giản là không xây dựng.

0

mục đích của thử nghiệm là để kiểm tra xem "X" có "một cái gì đó mong đợi", để kiểm tra xem "một cái gì đó mong đợi" là chính xác để khẳng định, để mong đợi hoặc để xác minh. Đây là lý do tại sao hầu hết các khuôn khổ triển khai các phương pháp đó theo cách này hay cách khác là

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