Все говорят, что мы должны использовать новый assertThat
от Junit, но для большого сравнения Strings это, по-видимому, некоторая нехватка функции.assertThat vs assertEquals для сравнения больших строк
Пример:
@Test
public void testAssertThat() throws Exception {
Assert.assertThat("auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei",
CoreMatchers.equalTo("auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei"));
}
@Test
public void testAssertEquals() throws Exception {
Assert.assertEquals("auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei",
"auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei");
}
assertEquals
печатает легче сообщение на чтение об ошибке:
org.junit.ComparisonFailure: expected:<...uihaeuieahuiaehuieah[u]aiehiaueheauihaeuiha...> but was:<...uihaeuieahuiaehuieah[e]aiehiaueheauihaeuiha...>
в то время как assertThat
печатает это:
java.lang.AssertionError: Expected: "auiehaeiueahuiheauihaeuieahuiaehuieaheaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei" but: was "auiehaeiueahuiheauihaeuieahuiaehuieahuaiehiaueheauihaeuihaeuiaehuiaehuiaehuiaehaeuihaei"
Есть ли способ, чтобы получить такое же поведение с assertThat
?
Вы пробовали '' assertThat (actual, is (equalTo (expected))) ''? – user1438038
есть, такой же проблема. – caarlos0
Возможно, вы можете каким-то образом использовать Groovy PowerAssert. – Crazyjavahacking