【发布时间】:2020-01-13 02:56:31
【问题描述】:
我已经构建了一个 Xamarin.UITest 套件,并且正在真正的 Android 设备上进行本地测试。我注意到一两个测试失败了,但不一定是相同的测试。每当我尝试重新运行此类测试以查看它们失败的原因时,它们都会通过!因此,我需要添加功能以查看测试失败时屏幕上的内容。我似乎无法找到专门针对此的指南 - 只是零碎的......
我已将 EnableLocalScreenshots() 添加到我的 StartApp() 调用中,但我不确定接下来的步骤。所以我有一些问题:
我需要指定截屏的保存位置,还是自动完成?
当出现 AssertionException 时,我是否需要显式编写代码来截取屏幕截图,或者这是屏幕截图功能默认执行的操作?
如果我需要编写代码在出现 AssertionException 时截取屏幕截图,请您指出此代码的示例,以便我可以将其添加到我的套件中?
谢谢
编辑:回复:Take screenshot on test failure + exceptions
我在我的 Hooks.cs 文件中尝试了以下内容:
[OneTimeTearDown]
public void OneTimeTearDown()
{
if (TestContext.CurrentContext.Result.Outcome == ResultState.Error || TestContext.CurrentContext.Result.Outcome == ResultState.Failure)
{
App.Screenshot(TestContext.CurrentContext.Test.Name);
}
}
在调试这个方法时,我发现它从来没有被调用过。即使我使用 TearDown 和 AfterScenario 属性也不行。太好了——Intellisense 喜欢我的代码,很糟糕——因为它永远不会被调用。应该没那么难!
我在这个套件中使用 Specflow,这可能与我遇到此问题的原因有关吗?这就是为什么我无法在上述线程上实现解决方案如下,因为 Specflow 管理 NUnit 测试......
UITest(() =>
{
// Do your test steps here, including asserts etc.
// Any exceptions will be caught by the base class
// and screenshots will be taken
});
【问题讨论】:
标签: c# assertion xamarin.uitest