2009-07-07 25 views

Trả lời

191

Nếu bạn thêm trong hamcrest và Junit4, bạn có thể làm:

String x = "foo bar"; 
Assert.assertThat(x, CoreMatchers.containsString("foo")); 

Với một số hàng nhập khẩu tĩnh, có vẻ tốt hơn rất nhiều:

assertThat(x, containsString("foo")); 

Hàng hóa nhập khẩu tĩnh cần thiết sẽ là:

import static org.junit.Assert.assertThat; 
import static org.hamcrest.CoreMatchers.containsString; 
+0

Mẫu mã luôn thắng :) – ripper234

+0

Nó không biên dịch :) – pjp

+5

Hãy chắc chắn rằng bạn đang sử dụng 'org.junit.Assert' so với' junit.framework.Assert', vì sau này không có Hamcrest Matcher 'assertThat()' –

5

Sử dụng assertThat cú pháp mới cùng với Hamcrest.

Bắt đầu với JUnit 4.4.

7

sử dụng fest assert 2.0 bất cứ khi nào có thể EDIT: assertj có thể có hơn khẳng định (nĩa)

assertThat(x).contains("foo"); 
+0

Cách này có vẻ tốt hơn so với câu trả lời được chấp nhận, thông thạo API ftw! – Jezor

6

Sử dụng Matcher hamcrest containsString()

// Hamcrest assertion 
assertThat(person.getName(), containsString("myName")); 

// Error Message 
java.lang.AssertionError: 
Expected: a string containing "myName" 
    got: "some other name" 

Bạn có thể tùy chọn thêm một thông báo lỗi chi tiết hơn.

// Hamcrest assertion with custom error message 
assertThat("my error message", person.getName(), containsString("myName")); 

// Error Message 
java.lang.AssertionError: my error message 
Expected: a string containing "myName" 
    got: "some other name" 

văn trả lời của tôi cho một câu hỏi trùng lặp here

0

biến thể khác là

Assert.assertThat(actual, new Matches(expectedRegex)); 

Hơn nữa trong org.mockito.internal.matchers có một số quẹt thú vị khác, như StartWith, Contains, vv

0

Tôi đã thử nhiều câu trả lời vào thứ là trang, không ai thực sự làm việc:

  • org.hamcrest.CoreMatchers.containsString không biên dịch, không thể giải quyết phương pháp.
  • JUnitMatchers.containsString được depricated (và đề cập đến CoreMatchers.containsString).
  • org.hamcrest.Matchers.containsString: NoSuchMethodError

Vì vậy, tôi ngừng cố gắng để làm cho mã độc đáo có thể đọc được, nhưng sử dụng các phương pháp đơn giản và hoàn toàn khả thi đề cập trong câu hỏi để thay thế.