我的任务是测试一个现有的应用程序,过去我自己也是这样做的,但是我不确定我是否使用了正确的方法。
我们说我有以下例子:
类users
有一个名为getAll()
的函数,它通过查询数据库返回用户列表。 (据我所知)有两种直接测试此功能的方法:
在单元测试中使用getAll()
函数使用的相同查询代码。然后,执行getAll()
调用并断言结果。
让数据提供者提供具有预期格式的单元测试数据,硬编码为我们知道包含在数据库中的值。例如,我们将以getAll()
函数期望的格式传递包含所有用户的硬编码数组,并声明结果。
虽然第二种方法似乎更符合测试,但它增加了一层安全风险。任何有权访问测试套件的人都可以通过明文访问大量潜在的敏感数据。最重要的是,根据数据库大小,如上所述的查询可能会使测试变得非常冗长,原因很简单。
哪种方法首选?
答案 0 :(得分:0)
在这两种方法中,您建议使用真实数据库并比较结果。我认为正确的单元测试应该能够在不连接到真实资源的情况下验证功能行为。我建议将连接字符串(可能是函数参数)更改为具有类似用户表的某个测试数据库,并验证函数行为。通过这种方式,您将不会遇到任何安全风险,单元测试(或测试)将是独立的。