以编程方式在MSTest中超时测试

时间:2012-09-20 12:26:28

标签: c# tfs mstest

我有一种情况,即我使用单元测试来执行执行测试的外部工具。我可以从工具的退出代码中确定测试是通过,失败还是超时。

是否有某些方法可以使单元测试失败,将测试结果设置为超时而不是失败?

我尝试过抛出TimeoutException,但这与使用Assert的结果相同。

修改 我们将单元测试与TFS中的测试用例相关联。在Microsoft测试中心,测试运行中的测试可以有许多状态。其中一个是超时状态。我试图使我的测试失败,以便它在这种状态下正确显示,并且不会对失败的测试用例感到沮丧。

3 个答案:

答案 0 :(得分:13)

您可以在Test属性...中添加Timeout(毫秒)来设置每个测试的超时限制。

[TestMethod, Timeout(2000)]

如果执行时间超过2秒,测试将失败。

由于 马尔科

答案 1 :(得分:2)

这不是“编程”,但你可以:

如果你的测试认识到外部工具返回超时退出代码(这将是“程序化”部分),你的测试应该等待。)

因此,测试框架会将测试结果设置为“Timeout”。

特别是如果您的测试是自动化的,那么我认为这将是一个合适的解决方案。

答案 2 :(得分:1)

在单元测试中,您可以使用2种颜色进行处理:绿色和红色。没有超时颜色。

所以我猜你可以手动验证测试,以防你的外部工具超时:

Assert.Fail("External tool used to do this test timed out");

检测外部工具超时的方法当然取决于您使用的外部工具以及从单元测试中调用它的方式。