2017-05-20 21 views
7

Khẳng định rằng một string là không có sản phẩm nào trong JUnit có thể được thực hiện theo các cách sau:Làm thế nào để assertThat String là không có sản phẩm nào

assertTrue(!string.isEmpty()); 
assertFalse(string.isEmpty()); 
assertThat(string.toCharArray(), is(not(emptyArray())); // (although this didn't compiled) 

Câu hỏi của tôi là: là có một cách tốt hơn để kiểm tra này - một cái gì đó như:

assertThat(string, is(not(empty()))?

+3

Có một trình phù hợp cho các hoạt động chuỗi đó: ['IsEmptyString'] (http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/text/IsEmptyString.html) – Seelenvirtuose

+0

Một cách khác:' assertThat (chuỗi .isEmpty(), là (false)) ' – Seelenvirtuose

Trả lời

20

Trong hamcrest 1.3 bạn có thể sử dụng Matchers#isEmptyString:

assertThat(string, not(isEmptyString())); 

Trong hamcrest 2.0, bạn có thể sử dụng Matchers#emptyString:

assertThat(string, is(not(emptyString()))); 
+0

Tôi đã hình dung rằng * nên * là một cái gì đó như thế, nhưng tôi cho rằng không được có hoặc OP sẽ không hỏi. Cảm ơn bạn đã thực sự kiểm tra. :-) – Wyzard

+1

@Wyzard hi, sir. Cảm ơn phản hồi của bạn. Trên thực tế nó là cách ngắn của bạn.^_^ –

+1

Vâng, nhưng của bạn là tốt hơn (hoặc ít nhất, đó là những gì tôi thực sự sử dụng, bây giờ mà tôi biết nó tồn tại). – Wyzard

1

Viết lớp TestHelper của riêng bạn, nơi bạn có thể thu thập các phương thức tùy chỉnh để xác nhận, ví dụ:

public static void assertEmpty(String input) {...} 
+0

Đây là thứ mà tôi có thể triển khai. Điều đó có nghĩa là, không có cách nào khác sử dụng ** Toán học **? – Armine

+0

Nó chỉ là một gợi ý. Ứng dụng của bạn phát triển càng lớn thì hữu ích khi có các phương thức hỗ trợ và xác nhận tùy chỉnh hỗ trợ kiểm tra logic nghiệp vụ của riêng bạn. Ví dụ, thay vì kiểm tra '' assertTrue (password.length> 6) '' bạn có thể có phương thức '' assertPasswordOk (password) '' để kiểm tra tất cả các tiêu chuẩn cho một mật khẩu hợp lệ. – Matt

0

Điều bạn muốn khẳng định là kích thước của chuỗi.

assertThat("String is empty", 
     string.length(), 
     greaterThan(0)); 
1

Điều bạn cũng có thể làm là sử dụng thư viện có tên AssertJ cung cấp xác nhận thông thạo tuyệt vời vào mã của bạn. Kiểm tra có thể được thực hiện với thanh lịch:

assertThat(myString).isNotEmpty();

3

Tôi muốn sử dụng assertThat(string, is(not(equalTo("")))). Không giống như các phương pháp khác liên quan đến việc kiểm tra kết quả của các phương thức .length() hoặc .isEmpty() của chuỗi, điều này sẽ cho bạn thấy nội dung của chuỗi trong thông báo lỗi khi thử nghiệm không thành công.

(Edit:.. Trên thực tế, không, tôi sẽ không Tôi muốn sử dụng emptyString() hoặc isEmptyString() khớp như được giải thích trong holi-java's answer Upvote mà một, không phải này một.)

1

Bạn có thể sử dụng riêng assertNotEquals khẳng định JUnit của:

Assert.assertNotEquals("", string); 
0

Nếu bạn đang sử dụng mùa xuân, bạn có thể sử dụng chức năng StringUtils.hasLength(String str) -từ org.springframework.util package- mà làm kiểm tra null và kiểm tra chiều dài của chuỗi nhất định.

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