Có cách nào đẹp hơn để viết trong JUnitAssertContains trên dây trong JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
Có cách nào đẹp hơn để viết trong JUnitAssertContains trên dây trong JUnit
String x = "foo bar";
Assert.assertTrue(x.contains("foo"));
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;
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");
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
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
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
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:
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ế.
Mẫu mã luôn thắng :) – ripper234
Nó không biên dịch :) – pjp
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()' –