如何使用 SSDT 对使用不同输入的函数进行单元测试

How to use SSDT to unit test a function using different inputs

我正在查看创建 SSDT Unit Tests 的文档。所有示例都显示了测试存储过程。但是,如果我想测试标量或 table 值函数,我可以在其中验证给定输入的预期输出怎么办。

我知道 tSQLt。尽管在该框架中创建单元测试非常容易,但它也与开发数据库紧密绑定。我更喜欢在单独的项目中进行测试。事实上,单元测试项目中的测试对我来说是一个巨大的吸引力,这就是为什么我决定花我的精力来获得满足我需要的 SSDT 单元测试。

我想出了如何创建一个测试条件。 (见截图)。

测试代码块中,我定义了输入值@ofDate = '2/1/2018'并在属性window中定义了预期输出。

DECLARE @RC AS DATE, @ofDate AS DATE;

SELECT @RC = NULL,
       @ofDate = '2/1/2018';

SELECT @RC = [dbo].[GetMostRecentThursday](@ofDate);

SELECT @RC AS RC;

我可以点击 "Test Conditions" 面板中的绿色加号并为标量值添加新的测试条件(例如 "if date is '2/2/2018' then return '2/1/2018'"),但我没有看到设置唯一性的方法输入新的测试条件。

换句话说,如何为特定的测试条件定义唯一的输入参数?我是否需要创建另一个单元测试文件来测试新条件?

@user7396598 给了我需要弄清楚的提示。关键创建一个新的单元测试,但不是一个新的单元测试class。

尽管有一种 "shorter" 方法可以执行以下操作,但我更喜欢我现在介绍的方法,因为编码器出错的可能性较小。您的样板已正确设置,因此您可以将重点放在需要为测试设置的特定项目上。

  1. 右键单击您正在测试的功能并创建单元测试。

  1. 这是他们的关键:将单元测试插入到预先存在的测试中class

  1. 看起来很眼熟,但这就是重点。您需要做的就是设置输入值和测试条件。

这就是您添加新测试的方式。