我正在尝试将我的一些 WebDriver 测试从 JAVA 移植到 C#。我坚持的是驱动程序在页面上找不到某些元素的情况,在 JAVA 中我这样做:
if (second >= 10) fail("timeout - " + list);
因此,如果某件事花费的时间超过 10 秒,则测试失败并显示超时消息。 我在 C# 中尝试了类似的方法
if (sec >= 10) Debug.Fail("timeout : " + vList);
但这实际上并没有使测试失败,而是让我可以选择使用异常消息框来进行测试。那是一个不,不,我需要我的自动测试自己完全失败。然后我试了一下
if (sec >= 10) Assert.Fail("timeout : " + vList);
但这会抛出一个未处理的异常错误。我应该将 Assert.Fail 包含在 try/catch block 中吗?还是我应该使用完全不同的东西来使测试失败?
如主题中所述,我正在使用 MSTest。
编辑:确切的信息是:
AssertFailedException was unhandled by user code. Assert.Fail failed. timeout : someField.
在
Assert.Fail("timeout : " + vList);
请您参考如下方法:
我认为您会看到这种行为,因为您已将调试器附加到正在运行的测试 - Assert.Fail
抛出 AssertFailedException
,您的调试器会看到异常并且休息 - 你得不到测试结果。
在“调试”菜单上,进入“异常”,找到 AssertFailedException
(如果不存在则为其创建一个条目)并确保针对该异常类型关闭抛出中断。
或者,在不附加调试器的情况下运行测试。