Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使陷入无限循环的测试失败?_C#_.net_Unit Testing_.net 2.0_Mstest - Fatal编程技术网

C# 如何使陷入无限循环的测试失败?

C# 如何使陷入无限循环的测试失败?,c#,.net,unit-testing,.net-2.0,mstest,C#,.net,Unit Testing,.net 2.0,Mstest,我有一些生成无限循环的代码。现在我需要写一个测试,大约200毫秒后会失败。200ms表示代码处于无限循环中 例如: public void CodeUnderTest() { while(true) { } } 那么: Task.Create(CodeUnderTest).Wait(TimeSpan.FromSeconds(1)); 或: 或: 使用MSTest时,可以使用属性 [TestMethod] [Timeout(200)] 看 您可以设置执行测试或测试运行的

我有一些生成无限循环的代码。现在我需要写一个测试,大约200毫秒后会失败。200ms表示代码处于无限循环中

例如:

public void CodeUnderTest()
{
   while(true)
   {

   }
} 
那么:

Task.Create(CodeUnderTest).Wait(TimeSpan.FromSeconds(1));
或:

或:


使用MSTest时,可以使用属性

[TestMethod]
[Timeout(200)]

您可以设置执行测试或测试运行的时间限制 遵守您可能需要这样做,例如,如果 在测试实验室工作,需要在一定时间内完成测试运行 一天之中

使用时间限制的另一种情况是非响应代码


当然是这样,不要认为有一种框架方法可以实现这一目标——不应该有任何代码部分可以永远运行;)@由于某种原因,Create对我来说不存在?@O.O Use
Task.Factory.StartNew
uh。。task.create只能>=.net4。。。查看编辑的一个。完美。正是我要找的。@TheHe-结果是超时。mh好的。。。他必须决定在这项infinte任务中预期的行为;)@P.Brian.Mackey-我不知道确切的原因,但当我尝试这个时,代码仍然永远运行…@他-嗯,这就是我如何解释停止问题的。一般来说,对于复杂的问题,我们永远不知道程序是否会停止或永远继续。在这种情况下,我们可以添加一个合理的超时,并假设如果它超过超时,那么程序将执行一个无限循环。如果它运行的时间更长,他会认为它成功了——为什么?不知道,但这是我从问题中得到的;)“超时”在mstest中是一个错误案例,对吗?;)您可以在测试设置下使用测试超时。在每个测试开始时编辑添加[TestMethod(),超时(ms)]。或者查看测试运行范围超时的testTimeout设置,在此处插入“停止问题”参考。如何?这并不能真正回答问题。您使用的是哪种框架?例如,xUnit和MSTest有一个属性。您真的是针对.NET2.0编写的吗?现在已经7岁了,3岁,3.5岁,4岁,4.5岁。
Task.Factory.StartNew(() => CodeUndertest(arg1,arg2,arg3...)).Wait(TimeSpan.FromSeconds(1));
[TestMethod]
[Timeout(200)]