2012-02-20 3 views
39

Sử dụng thư viện hamcrest cho Java, một cách độc đáo có thể đọc được để làm điều ngược lại của những gì:khẳng định không chứa mục

assertThat(someCollection, hasItem(someItem)) 

Tôi muốn chắc chắn someCollection không chứa mục someItem

Trả lời

70

phủ nhận các hasItem khẳng định

assertThat(someCollection, not(hasItem(someItem))) 
+4

Khi tôi đã nhập gói IsNot ('import static org.hamcrest.core.IsNot.not') nó hoạt động tốt. – harschware

+0

'Matcherzs' xác định tất cả. các phương thức factory để bạn có thể có một '*' static import duy nhất. Tôi sẽ tìm một công việc nếu không ai khác đăng dòng trong giờ tiếp theo. –

+5

@harschware - Từ [hướng dẫn cơ bản] (http://code.google.com/p/hamcrest/wiki/Tutorial), 'nhập static org.hamcrest.MatcherAssert.assertThat;' và 'import static org.hamcrest. Matchers. *; ' –

1

Nếu bạn cần khẳng định một mảng, việc sử dụng cùng một logic 'không (hasItemInArray())'

final String[] availableIds = {"123", "321"}; 
     final String userId = "333"; 

     softAssert.assertThat("Id not found", availableIds, not(hasItemInArray(userId))); 
     softAssert.assertAll();