当有';什么是断言例外?(Xamarin.UITest,C#)
我已经构建了一个Xamarin.UITest套件,并且正在真正的Android设备上进行本地测试。我注意到有一两次测试失败,但不一定是相同的测试。每当我试图重新运行这些测试,看看它们为什么会失败,它们都会通过!因此,我需要添加功能,以便在测试失败时查看屏幕上显示的内容。我似乎找不到专门针对这一点的指南——只是一些零碎的东西 我已经在StartApp()调用中添加了EnableLocalScreenshots(),但我不确定接下来的步骤。所以我有一些问题:当有';什么是断言例外?(Xamarin.UITest,C#),c#,assertion,xamarin.uitest,C#,Assertion,Xamarin.uitest,我已经构建了一个Xamarin.UITest套件,并且正在真正的Android设备上进行本地测试。我注意到有一两次测试失败,但不一定是相同的测试。每当我试图重新运行这些测试,看看它们为什么会失败,它们都会通过!因此,我需要添加功能,以便在测试失败时查看屏幕上显示的内容。我似乎找不到专门针对这一点的指南——只是一些零碎的东西 我已经在StartApp()调用中添加了EnableLocalScreenshots(),但我不确定接下来的步骤。所以我有一些问题: 我是否需要指定屏幕截图的保存位置,还是自
[OneTimeTearDown]
public void OneTimeTearDown()
{
if (TestContext.CurrentContext.Result.Outcome == ResultState.Error || TestContext.CurrentContext.Result.Outcome == ResultState.Failure)
{
App.Screenshot(TestContext.CurrentContext.Test.Name);
}
}
调试这个方法后,我发现它从未被调用过。即使我使用了“拆卸”和“赛后”属性也不行。太棒了-智能感知喜欢我的代码,不好-因为它从未被调用过。不应该这么难
我在这个套件中使用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
});
对我来说,这就是答案 在类上方添加了[Binding]属性(我的部分出现了哑错误) 在我的截图方法上方添加了[AfterScenario()],并使其成为静态方法
[AfterScenario()]
public static void TakeScreenshot()
指定了保存屏幕截图的位置
App.Screenshot(TestContext.CurrentContext.Test.Name).CopyTo(@"C:\Users\me\Desktop\" + TestContext.CurrentContext.Test.Name + ".png");
所以我猜是App.Screenshot(字符串标题)只是简单地获取一个屏幕截图并保存在内存中,但实际上您需要将它显式地保存在某个位置以获取它,而不是假设它只保存到默认位置
就这样 可能的副本发现,实际上,一个屏幕截图也被保存到C:\Users\me\AppData\Local\Temp,这是需要注意的。请使用.MoveTo而不是.CopyTo
App.Screenshot(TestContext.CurrentContext.Test.Name).CopyTo(@"C:\Users\me\Desktop\" + TestContext.CurrentContext.Test.Name + ".png");