单元测试订购了 SQL 个查询

Unit testing ordered SQL queries

我正在为查询编写单元测试,结果必须return按特定的排序顺序进行编辑。我们在内存数据库中使用 Java H2。

我想确保 "order by" 语句正确执行。我没有尝试测试 H2,我接受它是正确的,我正在尝试测试我是否已将 SQL 语句更正为 return 正确排序的结果。

我在想一种方法,让 H2 每次在排序之前随机化结果,或者可能是某种 SQL 插入,每次都以随机顺序向表中插入行。希望这可以测试顺序是否正确。我知道这不能保证,因为数据库决定了它自己的内部顺序,但我想我会把它作为我正在考虑的一个想法。

我认为你不应该随机化 H2 结果。我建议您编写两个或三个具有相同查询和不同 order by 的测试。在这种情况下,您要确保不同的顺序参数导致结果的排序顺序正确。

您只需要插入两行不得更改(不要插入随机数据)。例如,如果您有一个包含以下列的用户实体:id、name、surname。

您插入了 2 行:


#id# name # surname #
#####################
#1# john  # doe     #
#2# eva   # nondoe  #

例如,如果您对名称列感兴趣,那么您可以编写这样的测试。

//BUILD
insertData();

//OPERATE
List<User> result = selectAllDataByNameAsc();

//CHECK
assertThat(result.get(0).getName()).isEqualTo("eva");

这就够了。两行足以测试您的排序查询。