VS2013 - SQL 服务器单元测试 - 查询超时

VS2013 - SQL Server Unit Test - Query Timeout

我正在 Visual Studio 2013 年创建我的第一个 SQL 服务器单元测试。我有一个脚本 运行 在 SQL Server Management Studio window。我有一个重置数据库状态的脚本,它也成功 运行s。 (我已将其设置为我的 PreTest 脚本。)我的单元测试大约需要 2 分钟 运行。 (它在幕后生成大量数据。)但是 SQL 服务器单元测试似乎配置为 30 秒后超时。我一直在试图找出如何更改超时设置,但我似乎无法找到它。 (请注意,我指的不是连接超时,而是查询执行超时。)我想 运行 此测试的超时设置为 3 分钟。

提前致谢。

数字,我在发布问题前花了一个小时搜索,然后在 10 分钟后找到答案。这是我的测试代码,其中包含命令超时行:

    [TestMethod()]
    public void CreateScenario_FromProject_Q123314_FromVersion_AA()
    {
        SqlDatabaseTestActions testActions = this.SqlTest1Data;
        // Execute the pre-test script
        // 
        System.Diagnostics.Trace.WriteLineIf((testActions.PretestAction != null), "Executing pre-test script...");
        SqlExecutionResult[] pretestResults = TestService.Execute(this.PrivilegedContext, this.PrivilegedContext, testActions.PretestAction);
        // Execute the test script
        // 
        System.Diagnostics.Trace.WriteLineIf((testActions.TestAction != null), "Executing test script...");
        this.ExecutionContext.CommandTimeout = 180;  // HERE IS THE COMMANDTIMEOUT
        SqlExecutionResult[] testResults = TestService.Execute(this.ExecutionContext, this.PrivilegedContext, testActions.TestAction);
        // Execute the post-test script
        // 
        System.Diagnostics.Trace.WriteLineIf((testActions.PosttestAction != null), "Executing post-test script...");
        SqlExecutionResult[] posttestResults = TestService.Execute(this.PrivilegedContext, this.PrivilegedContext, testActions.PosttestAction);
    }

这对我很有帮助。我发现并想分享另一种方法,这样它就更全球化,而不是只适用于单个测试用例。

您可以通过更新 app.config 中连接字符串的 CommandTimeout 来全局应用超时设置(如下所示)。这适用于 SSDT 2016 和 Visual Studio 2017。

<ExecutionContext Provider="System.Data.SqlClient" ConnectionString="" CommandTimeout="60" />
<PrivilegedContext Provider="System.Data.SqlClient" ConnectionString="" CommandTimeout="60" />