使用 JUnit 在标准输出上测试一些复杂字符串的最佳方法是什么?
我正在使用JUnit对Java程序进行一些测试。我想测试一些在标准输出中显示复杂字符串的方法。
例如,我有一个显示的方法:
Index Marque Modèle Pays Vente
1 Renault Clio France 12000
2 Peugeot 208 France 9900
所以有一些t
和n
,一些空格和大量的文字。我已经做了这个测试(有效(,但这似乎不是一个好的做法:
String s = System.getProperty("line.separator");
assertEquals("IndextMarquetModèletPaystVentet"+s+"1tRenaulttCliotFrancet12000t"+s+"2tPeugeott208tFrancet9900t"+s, outContent.toString());
这看起来很糟糕和费力,它有效,但也许有一些更好的方法。
我们编写单元测试,每个测试方法应该只验证一个期望。
在我看来,您的复杂输出具有多个这样的单一期望:
- 输出包含标题行
- 标题行的"字段"(至少(用
t
个字符
分隔 - 每行以系统行分隔符结尾
- 每个产品添加单独的行
- 所有产品线在第一个字段中都以连续数字开头
- 。
创建所有这些测试方法可能看起来需要做很多工作,但请考虑以下情况:
- 测试方法的名称准确描述了设备的功能
- 当您(意外地(更改逻辑时,只需查看测试结果,您就可以获得非常准确的描述,该单元如何在不调试的情况下无法完成已定义的行为。