Когда я делаю это, я получаю junit.framework.AssertionFailedError:
assertEquals("123 \t July \t testuser \t USD \t one two \t pnl \t ACTUALS_STAGE \t product_line \t pnl", tabs );
Ошибка:
expected:<123[ July testuser USD one two pnl ACTUALS_STAGE product_line ]pnl>
but was:<123[ July testuser USD one two pnl ACTUALS_STAGE product_line ]pnl>
"tabs" получает параметры, разделенные табуляцией, от тестируемой функции. Утверждение не выполняется из-за проблемы с пробелами. Между значениями вместе с табуляцией добавляются пробелы.
Код теста:
@Before
public void setUp() throws Exception {
List<String> list = Arrays.asList("one", "two");
List<String> scenarioList = Arrays.asList("ACTUALS_STAGE");
List<Map<String, List<String>>> filter = new ArrayList<>();
Map<String, List<String>> filtersMap = new HashMap<>();
List<String> filterList = Arrays.asList("A1PCON");
filtersMap.put("product_line", filterList);
filter.add(filtersMap);
reportQueryParams = ReportQueryParams.builder()
.id("123").currency("USD").companies(list).cognosDatasetType("pnl").scenarios(scenarioList)
.filters(filter).reportTemplate("pnl")
.build();
}
@Test
public void tabSerializerTest() {
String remoteUser = "testuser";
HttpServletRequest httpServletRequest = Mockito.mock(HttpServletRequest.class);
Mockito.when(httpServletRequest.getRemoteUser())
.thenReturn(remoteUser);
MetricsSerializer metricsSerializer = new MetricsSerializer();
String tabs = metricsSerializer.serializeMetrics(reportQueryParams, httpServletRequest);
assertEquals("123 \t July \t testuser \t USD \t one two \t pnl \t ACTUALS_STAGE \t product_line \t pnl", tabs );
}
Например:
abc \ t pqr: это отобразит первое значение, добавит пробел, добавит табуляцию, добавит пробел, а затем отобразит второе значение.
Ожидается: abc \ tpqr
Если я сделаю «abc \ tpqr», я получаю следующую ошибку:
No runnable method found.
Я аннотировал его с помощью @Test, и он работает, если я сделаю "abc \ t pqr"
Я также пробовал делать "abc" + "\ t" "pqr", но он дает тот же запускаемый файл, который не найден (ошибка инициализации).
Как я могу справиться с этим, чтобы исправить ошибку утверждения и ошибку выполнения? Мне просто нужно пространство табуляции между значениями.
@DarrenForsythe - Отредактировал вопрос!
Второй вопрос: действительно ли вам важны пробелы или это просто раздражает тестируемые данные?




Вам действительно нужно проверять табуляцию и пробелы? Если нет, то передайте результат строки в новый метод, который исправит проблему с интервалом. Или вы можете просто вернуть массив значений, игнорируя пробелы, как показано ниже.
public static String[] getValues(String input){
//tokenize
String[] values = input.split("\\s+");
return values;
}
Затем вы можете использовать Утверждение для сравнения массивов ожидаемых и фактических.
Добавьте соответствующие части вашего метода тестирования.