当我这样做时,我得到一个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”,但它给出了未找到的可运行对象(初始化错误)。

我该如何处理以修复断言错误和可运行错误?我只希望值之间有一个制表符空间。

最佳答案

您是否真的需要检查选项卡和空格?
如果没有,则将您的字符串结果传递给将解决间距问题的新方法。
或者,您可以简单地返回一个值数组,而忽略空白,如下所示。

public static String[] getValues(String input){
  //tokenize
  String[] values = input.split("\\s+");
  return values;

}


然后,您可以使用断言来比较预期数组和实际数组。

10-08 01:20