2013-03-29 1 views
1

Я сделал много функционального тестирование на текстовых выходах на порождающем текст программного обеспечения в последнее время, найти себе писать многоAssertion неудачи сообщений для строки содержит подстроку

assertTrue(actualString.contains(wantedString)); 

Однако, сообщение, когда это не удается это что-то не-описательный, как

Expected [true], but was [false] 

альтернатива включать пользовательские неудачу сообщение, как

String failMsg = String.format("Wanted string to contain: %s, Actual string: %s", wantedString, actualString); 
assertTrue(failMsg, actualString.contains(wantedString)); 

Но это немного утомительно, чтобы делать это вручную все время. Есть ли лучший способ?

+2

Лично я не беспокоить писать дополнительные сообщения по большей части - тесты редко терпят неудачу, и когда они делают, отлаживать в них для получения более подробной информации :) –

+1

Для модульных тестов - нет, но это является функциональным (интеграция), которые могут быть запущены на сервере Jenkins, добавленный уровень детализации полезен. – Theodor

ответ

6

Использование Hamcrest Сличитель containsString()

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

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

Вы можете опционально добавить еще сообщение об ошибке подробно.

// 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"