0

在 xml 配置文件中,我有一个分隔符属性配置为 unicode 转义序列,如下所示:

<adapter name="Adapter2">
  <property name="adapter.delimiter" value="\u0009"/>
</adapter>

还有一种方法可以获取 Adapter 类中的任何属性:

String getProperty(String propertyName)

对于 getProperty("adapter.delimiter") 它返回已经转义的字符串 "\t"

我需要将属性 \u0009 转换为 char 以便能够将 \t char 提供给任何其他方法。

  • 如何验证该方法在单元测试中是否真的返回 tab char?

这不起作用(我不确定代码或单元测试是否错误):

public char getDelimiter() throws VTBaseException {
    String delimiterProperty = getProperty("adapter.delimiter");

    if (delimiterProperty == null || "".equals(delimiterProperty)) {
        //default
        return DEFAULT_DELIMITER;
    } else if (delimiterProperty.length() == 1) {
        return delimiterProperty.charAt(0);
    } else {
        throw new VTBaseException();
    }
}

单元测试:

@Test
public void testReturnDelimiterProperty()
    throws Exception
{
    VTAdapter adapter = manager.getAdapter("Adapter2");
    assertEquals(',', adapter.getDelimiter());//passes if property not set
    adapter = world.getAdapterList().getAdapter("Adapter1");
    assertEquals("\t", adapter.getDelimiter());//fails with exception bellow


}

junit.framework.AssertionFailedError: expected:<    > but was:< >
at junit.framework.Assert.fail(Assert.java:47)
at junit.framework.Assert.failNotEquals(Assert.java:283)
at junit.framework.Assert.assertEquals(Assert.java:64)
at junit.framework.Assert.assertEquals(Assert.java:71)
at 
4

1 回答 1

0

输出一个选项卡:

String s = "\\u0009";
s = s.substring(2);
char i = (char)(int)Integer.valueOf(s, 16);
System.out.println(i);
于 2012-11-23T18:57:29.710 回答