【发布时间】:2009-01-20 15:06:09
【问题描述】:
我有一个关于字符串测试方法的问题。每次,我都会在一个以字符串为参数的方法上编写一个新测试。
现在,出现了一些问题:
- 如何在测试字符串中包含 \n、\r、\t、变音符号等?
- 如何设置编码?
- 我应该使用由 FileInputStream 打开的外部文件吗? (太多开销,恕我直言)
那么...你有什么方法来解决这个问题?
【问题讨论】:
标签: java unit-testing junit
我有一个关于字符串测试方法的问题。每次,我都会在一个以字符串为参数的方法上编写一个新测试。
现在,出现了一些问题:
那么...你有什么方法来解决这个问题?
【问题讨论】:
标签: java unit-testing junit
\n、\r\n、\r\n\r)【讨论】:
如何在测试字符串中包含\n、\r、\t、变音符号等?
嗯...按您想要的方式输入?您可以使用 \n、\r 和 \t、变音符号 stc。在 Java 字符串文字中;如果担心源代码文件的编码,可以使用Unicode escape sequences,也可以使用JDK自带的native2ascii工具生成。
如何设置编码?
一旦有了 Java 字符串,再担心编码就太迟了——它们使用 UTF-16,在字符串和字节数组之间进行转换时会出现任何编码问题(与 C 不同,Java 将这些概念明确分开)
编辑:
如果您的字符串太大而无法在源代码中舒适地使用,或者您真的担心换行符和空格的处理,那么将每个字符串保存在单独的文件中可能是最好的;这种情况下,读取文件时必须指定编码(在InputStreamReader的构造函数中)
【讨论】:
对于大字符串,我会使用文件。对于单元测试,性能足够快。为了这个小小的权衡,你:
【讨论】:
【讨论】:
如果您反复使用文字字符串中难以表达的字符(例如"、\、[ -~] 中没有的字符),那么您可能需要考虑在使用它之前的字符串。例如,如果您经常使用 \,那么您可能会编写一个函数来交换 \ 和 /。您可以使用多字符序列来表示重音字符。
但是,最终得到与问题不成比例的解决方案存在明显的危险。有时\u#### 更简单。
如果您要获取非 Java 文件,我建议将它们作为资源 (Class.getResourceAsStream/getResource) 而非松散文件打开。
【讨论】: