2016-03-20 13 views

cevap

2

Hamcrest marşları burada ihtiyacınız olan şeydir.

assertThat(bmf.toString(), is(finalMessage)); 

Bu hamcrest tarzı matchers gücü kendi yazma yeteneği gelen Edit

Expected "apples" but got "oranges". 

gibi

başarısızlık mesajlar yazdırılır.

private Matcher<BMF> stringsTo(final String desired) { 
    return new TypeSafeMatcher<BMF>() { 
     protected boolean matchesSafely(BMF item) { 
      return item.toString().equals(desired); 
     } 

     public void describeTo(Description description) { 
      description.appendText("should stringify as ").appendValue(desired); 
     } 

     protected describeMismatchSafely(BMF item, Description description) { 
      description.appendText(" was ").appendValue(item.toString()); 
     } 
    } 
} 

Daha sonra deney yönteminde kullanabiliriz:

Örneğin, test sınıfında, bir yöntem ekleyebilirsiniz Sen test değildir

@Test 
public void myTest() { 
    assertThat(bmf, stringsTo(finalMessage)); 
} 

o BMF nesne bir dize eşittir; bmf sınıfının BMF sınıfında olduğunu, null olmadığını ve toString() üzerinde çağrıldığında, finalMessage üretir. Testi gerektiği kadar karmaşık yapabilir ve açıklamaları istediğiniz gibi tanımlayabilirsiniz.

+3

Bu durum alakasız gibi görünüyor. OP'nin yapması gereken, assertTrue yerine assertEquals kullanmaktır, hiçbir hamcrest gerekli değildir. –

+1

@NathanHughes: Size bir ölçüde katılıyorum, ama biraz daha iyi mesajlara sahip olmak * neden * eşdeğeri değildi, aslında son derece faydalıdır. – Makoto

+0

@NathanHughes Tuhaf olarak, Hamcrest'i çok fazla kullandım, bu iddiaları bile unuttum! – AJNeufeld

İlgili konular