2011-08-17 35 views
5

Theo tiêu đề, tôi tự hỏi liệu có thể cung cấp "các giả định" cho Scalatest khi xác định một trường hợp thử nghiệm cụ thể hay không. Giả định trong bối cảnh này sẽ là điều kiện tiên quyết cho một thử nghiệm, như vậy nếu giả định được đánh giá là sai, kiểm tra sẽ bị bỏ qua thay vì được thực hiện (và được xử lý phù hợp bởi người chạy). Trong trường hợp cụ thể này, tôi đang nghĩ về sự phụ thuộc giữa các thử nghiệm - vì vậy có thể có một thử nghiệm cơ bản xác nhận liệu phương thức trả về bất cứ điều gì ở tất cả, tiếp theo là các bài kiểm tra sau đó đi sâu vào chi tiết cụ thể của phản hồi. Quay lại đầu trang Nếu thử nghiệm cũ thất bại, tôi muốn có thử nghiệm thứ hai được đánh dấu là "không chạy được" theo cách nào đó, thay vì khiến chúng không thành công. Điều đó nói rằng tôi có thể tưởng tượng sử dụng điều này trong tương lai để xác định một số điều kiện tiên quyết chưa được kết nối (chẳng hạn như ổ cứng phải có ít nhất 20MB không gian trống), vì vậy nếu có một cách tổng quát skippin một thử nghiệm trong thời gian chạy (như trái ngược với sử dụng ignore hoặc pending) Tôi muốn nghe điều đó.Scalatest có hỗ trợ cho các giả định không?

Cú pháp chuyên dụng được hoan nghênh, mặc dù nếu tôi phải tự ném một loại ngoại lệ nhất định cũng được chấp nhận.

+0

Làm thế nào để bạn muốn thử nghiệm để được được báo cáo? Như bị bỏ qua, chờ đợi, thành công, thất bại? –

+0

Tôi cũng muốn điều này. Các trường hợp sử dụng là populating một cơ sở dữ liệu với các công cụ kiểm tra; nếu không thành công, các bài kiểm tra (không phải tất cả) mà sẽ được đọc từ cơ sở dữ liệu không nên chạy. Tôi muốn báo cáo chúng là "bị bỏ qua". – akauppi

Trả lời

5

ScalaTest 2.0 (tôi nghĩ) thêm hỗ trợ cho các giả định:

Trait Khẳng định cũng cung cấp phương pháp cho phép bạn hủy bỏ một thử nghiệm. Bạn sẽ hủy kiểm tra nếu tài nguyên được yêu cầu bởi thử nghiệm không khả dụng. Ví dụ, nếu một bài kiểm tra yêu cầu một cơ sở dữ liệu bên ngoài để trực tuyến, và nó không phải là, kiểm tra có thể bị hủy bỏ để cho biết nó không thể chạy vì cơ sở dữ liệu bị thiếu. một thử nghiệm như vậy giả định một cơ sở dữ liệu có sẵn, và bạn có thể sử dụng các giả định phương pháp để cho biết điều này vào lúc bắt đầu của thử nghiệm, như thế này:

assume(database.isAvailable) 

http://www.scalatest.org/user_guide/using_assertions

+0

imho, đây là câu trả lời đúng – akauppi

+0

@akauppi Tôi đồng ý. Vì vậy, bây giờ nó được. :) –

1

Scalacheck, mà thường được sử dụng kết hợp với scalatest, có thể làm điều đó:

import org.scalacheck._ 

object XSpecifictaion extends Properties ("X") { 

    property ("sample (a - b)") = Prop.forAll { (a: Int, b: Int) => 
     (a < b || (a - b >= 0)) } 
} 

! (a < b) là giả định của bạn, và (a - b> = 0) thử nghiệm thực; bạn thực hiện chỉ sau, nếu giả định là đúng, vì vậy bạn phủ nhận giả định của bạn và kết hợp nó với một phím tắt-HOẶC.

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