MSTest:如何增加测试时间

时间:2010-11-05 20:27:16

标签: unit-testing tdd timeout mstest .net-3.5

我有一个测试需要工作超过1分钟(VS2008,MSTest,从VisualStudio启动测试):

    const int TestTimeout = 1;

    [TestMethod]
    [Timeout(10*60*1000)] // 10 minutes
    public void Login_ExpirationFail_Test()
    {
        IAuthenticationParameters parameters = new AuthenticationParameters(...);
        LdapAuthentication auth1 = new LdapAuthentication();
        IAuthenticationLoginResult res = auth1.Login(parameters);

        Assert.IsNotNull(res);
        Assert.IsFalse(string.IsNullOrEmpty(res.SessionId));

        const int AdditionalMilisecodns = 400;
        System.Threading.Thread.Sleep((TestTimeout * 1000 + AdditionalMilisecodns) * 60);

        LdapAuthentication auth2 = new LdapAuthentication();
        auth2.CheckTicket(res.SessionId);
    }

此测试在“运行”模式下完成,“测试'Login_ExpirationFail_Test'超出执行超时期限。”错误消息,在“调试”中 - 它工作正常。

我发现很少有与从命令行启动测试相关的类似问题。

如何让我的测试在“运行”模式下可以使用?

感谢。

3 个答案:

答案 0 :(得分:20)

答案很简单:属性值应该是常量,而不是表达式。

更改

[Timeout(10*60*1000)]

[Timeout(600000)]

解决了一个问题。

编辑:对我的注意答案的评论我最初在答案中做了一个错误(写成“60000”作为超时值)。在我的源代码中,我有6000000并且该值有帮助。答案最近得到了纠正

答案 1 :(得分:11)

除了指定秒数外,Timeout()还支持一个允许无限等待的常量。

[Timeout(TestTimeout.Infinite)]

答案 2 :(得分:0)

不是特定的步骤,但应指向正确的方向:

如果您还没有测试设置文件,请将其添加到解决方案中。

使用测试设置打开配置向导,并查找控制测试超时的设置。