使用 JUnit 在标准输出上测试一些复杂的字符串



使用 JUnit 在标准输出上测试一些复杂字符串的最佳方法是什么?

我正在使用JUnit对Java程序进行一些测试。我想测试一些在标准输出中显示复杂字符串的方法。

例如,我有一个显示的方法:

Index   Marque  Modèle  Pays    Vente   
1       Renault Clio    France  12000   
2       Peugeot 208     France  9900    

所以有一些tn,一些空格和大量的文字。我已经做了这个测试(有效(,但这似乎不是一个好的做法:

String s = System.getProperty("line.separator");    
assertEquals("IndextMarquetModèletPaystVentet"+s+"1tRenaulttCliotFrancet12000t"+s+"2tPeugeott208tFrancet9900t"+s, outContent.toString());

这看起来很糟糕和费力,它有效,但也许有一些更好的方法。

我们编写单元测试,每个测试方法应该只验证一个期望

在我看来,您的复杂输出具有多个这样的单一期望

  1. 输出包含标题行
  2. 标题行的"字段"(至少(用 t 个字符
  3. 分隔
  4. 每行以系统行分隔符结尾
  5. 每个产品添加单独的行
  6. 所有产品线在第一个字段中都以连续数字开头

创建所有这些测试方法可能看起来需要做很多工作,但请考虑以下情况:

  • 测试方法的名称准确描述了设备的功能
  • 当您(意外地(更改逻辑时,只需查看测试结果,您就可以获得非常准确的描述,该单元如何在不调试的情况下无法完成已定义的行为。

最新更新