Bud*_*dda 23 tdd unit-testing mstest timeout .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);
}
Run Code Online (Sandbox Code Playgroud)
此测试在"运行"模式下完成,"测试'Login_ExpirationFail_Test'超出执行超时期限." 错误消息,在"调试" - 它工作正常.
我看到几个与从命令行启动测试相关的类似问题.
如何在"运行"模式下使我的测试可行?
谢谢.
Bud*_*dda 18
答案很简单:属性值应该是常量,而不是表达式.
更改
[Timeout(10*60*1000)]
Run Code Online (Sandbox Code Playgroud)
至
[Timeout(600000)]
Run Code Online (Sandbox Code Playgroud)
解决了一个问题.
编辑:评论答案引起我的注意我最初在答案中做了一个错误(写作"60000"作为超时值).在我的源代码中,我有6000000并且该值有帮助.答案最近得到纠正
Seb*_*ldi 12
除了指定秒数外,还Timeout()
支持一个允许无限等待的常量.
[Timeout(TestTimeout.Infinite)]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13678 次 |
最近记录: |