2009-07-07 18 views

Trả lời

41

Tóm lại, để trả lời câu hỏi của bạn: Bạn không cần tích hợp TestNG với Hamcrest. Chỉ cần gọi số org.hamcrest.MatcherAssert.assertThat(...) trực tiếp để ném java.lang.AssertionError.

nền

tôi thấy câu hỏi của bạn qua Google, tự hỏi chính xác cùng một vấn đề. Sau khi Googling hơn nữa, tôi đã không tìm thấy bất kỳ câu trả lời thỏa mãn, vì vậy tôi đọc mã nguồn cho sự tích hợp của JUnit với Hamcrest.

Với JUnit, hamcrest tích hợp thường được sử dụng bằng cách gọi:

org.junit.Assert.assertThat(
    T actual, 
    org.hamcrest.Matcher<? super T> matcher) 

Khi tôi đọc mã nguồn, tôi phát hiện ra nó chỉ là một wrapper nhỏ gọi:

org.hamcrest.MatcherAssert.assertThat(
    String reason, 
    T actual, 
    org.hamcest.Matcher<? super T> matcher) 

Chức năng này ném java.lang.AssertionError .

+0

Điều này thật tuyệt vời ngoại trừ _TestNG_ có [xác nhận mềm] (http://static.javadoc.io/org.testng/testng/6.8.21/org/testng/asserts/SoftAssert.html) có thể không được sử dụng từ _Hamcrest_. – Bass

2

Nếu bạn đang gặp vấn đề với phương pháp trống thì tôi khuyên bạn nên thêm hamcrest đầu tiên vào danh sách phụ thuộc. hoặc nhập hamcrest đầu tiên, nó sẽ giải quyết vấn đề.

Tôi đã sử dụng TestNJ với rexsl (sử dụng nội bộ Hamcrest) và không tìm được phương thức trống. sau đó tôi đã thêm rexsl đầu tiên vào danh sách phụ thuộc, nếu bạn đang thêm thư viện trong đường dẫn lớp, bạn có thể thử thêm đầu tiên vào Hamcrest.

hy vọng nó sẽ giúp một người như tôi.

0

gì làm việc cho tôi: 1. http://search.maven.org/

  1. tìm kiếm cho 'java-hamcrest' mới nhất như bây giờ là '2.0.0.0'

  2. tìm phụ thuộc cho Gradle (trong trường hợp của tôi)

  3. Đã thêm biên dịch 'org.hamcrest: java-hamcrest: 2.0.0.0' vào build.gradle trong dự án của tôi.