如何解决MS 测试 DataTestMethod 单个测试超时
我使用 MSTest (2.1.2) 并且我有一个数据驱动的测试。
[DataTestMethod]
[ExpenseTypesData]
[Timeout(600000)]
public void ManualExpenseReportTest(string category)
{
}
是否可以为单个数据行测试而不是所有数据行设置超时?
无论我有 2 行还是 200 行,此测试都会在超时时失败。不用说,我不知道将要执行多少测试,因此更改数字不是一种选择。除此之外,我不希望一个卡住的测试保存其他数据行。
解决方法
在 github 上正在进行有关此问题的讨论:https://github.com/microsoft/testfx/issues/728 正如用户期望的那样,TimeoutAttribute
将应用于每个 DataRow
。不幸的是,最后一个答案是 2020 年 8 月,因此解决这个问题的希望不大。
如果您确实需要它并且想要构建自己的解决方案,则可以将测试包装在异步 Task
中,并等待每行所需的任何超时。像这样:
[TestClass]
public class TestClass1
{
private int Timeout => 500;
[DataTestMethod]
[DataRow(100)]
[DataRow(1000)]
[DataRow(250)]
[DataRow(1500)]
[DataRow(100)]
public void Test1(int delay)
{
Task task = Task.Run(() =>
{
Thread.Sleep(delay); // Your test goes here
Assert.IsTrue(true); // Your asserts go here
});
if (!task.Wait(Timeout))
Assert.Fail("Test failed with timeout");
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。