如何在结束顺序相当灵活的情况下对生成的字符串进行单元化。假设我正在尝试测试一些代码,这些代码打印出来自键值对的生成 SQL。但是,许多片段的确切顺序并不重要。
例如
SELECT
*
FROM
Cats
WHERE
fur = 'fluffy'
OR
colour = 'white'
在功能上等同于
SELECT
*
FROM
Cats
WHERE
colour = 'white'
OR
fur = 'fluffy'
生成条件子句的顺序无关紧要,但重要的是它们遵循 where 子句。此外,很难预测,因为循环 a 时对的排序entrySet()
是HashMap
不可预测的。对键进行排序可以解决这个问题,但会因为没有(或负)业务价值而引入运行时惩罚。
如何在不过度指定顺序的情况下对此类字符串的生成进行单元测试?
我考虑过使用正则表达式,但* 我想不出如何写一个说:
一个正则表达式是我在想的,但我可以想到一个正则表达式,上面写着“SELECT * FROM Cats WHERE”,然后是 {“fur = 'fluffy', color = 'white'} 之一,然后是“OR”followed by one of one of {"fur = 'fluffy',
颜色= 'white'} ...而不是上次使用的那个。
注意:我实际上并没有使用 SQL 来执行此操作,它只是为解决问题提供了一种更简单的方法。