VS2013 - SQL Server单元测试 - 查询超时

时间:2015-01-09 15:34:36

标签: sql-server visual-studio unit-testing visual-studio-2013

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

提前谢谢。

2 个答案:

答案 0 :(得分:6)

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

    [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);
    }

答案 1 :(得分:0)

这对我非常有帮助。我发现并希望分享一种替代方法,使它更具全局性,而不是仅适用于单个测试用例。

您可以通过更新 0 1 2 3 b 1 0 0 0 d 1 1 1 0 e 1 1 1 1 a 0 0 0 0 b 1 0 0 0 中连接字符串的CommandTimeout来全局应用超时设置(如下所示)。这适用于SSDT 2016和Visual Studio 2017。

app.config