2011-02-08 29 views
11

Im sử dụng thư viện BDD Spec để viết các bài kiểm tra đơn vị Scala (http://code.google.com/p/specs) .Trong mã của tôi nếu tôi muốn khẳng định rằng ngoại trừ kiểu ClassNotFoundException, thì tôi có thể viết như sau mã:Trình kết hợp ngoại lệ trong thư viện BDD thông số cho Scala

a must throwA[ClassNotFoundException] 

Tuy nhiên, tôi muốn kiểm tra trường hợp ngược lại, iei muốn khẳng định rằng "không" ném ngoại lệ loại ClassNotFoundException.

tôi đã cố gắng sử dụng khớp không phủ định, như sau:

a must throwA[ClassNotFoundException].not 

Nhưng đó didnt làm việc. Im nhận được lỗi biên dịch. Vì vậy, có cách nào tôi có thể khẳng định rằng một ngoại lệ loại ClassNotFoundException ví dụ, không phải là ném?

Xin vui lòng giúp cảm ơn

Trả lời

2

Thậm chí nếu nó không trả lời cho vấn đề của bạn, bạn không cần phải kiểm tra nếu không có ngoại lệ được ném. Trong trường hợp này, bạn nên kiểm tra xem kết quả dự định có ổn không ... Ngay sau khi thử nghiệm được thực hiện, nó có nghĩa là nó không ném một ngoại lệ.

2

Làm thế nào về một cái gì đó như thế này:

"An isSpaceNode function" should { 
    "not fail with a Group" in { 
     Group(<a/><b/>).isSpaceNode must not throwA(new UnsupportedOperationException) 
    } 
} 
2

thử nghiệm dưới đây đi, nếu biểu thức ném bất cứ điều gì ngoại trừ ClassNotFoundException:

must throwA[Exception].like { 
    case m: ClassNotFoundException => false 
    case _ => true} 

Nếu bạn chỉ muốn chắc chắn rằng biểu thức doesn không ném ClassNotFoundException, tại sao không chỉ sử dụng khối try-catch:

try{ 
     ... 
    }catch{ 
     case m: ClassNotFoundException => fail("ClassNotFoundException") 
     case e => e.printStackTrace 
} 
17

Có có một vấn đề phân tích cú pháp khi biên dịch:

a must throwA[ClassNotFoundException].not 

Bạn cần phải viết thay vì:

a must not(throwA[ClassNotFoundException]) 
Các vấn đề liên quan