【发布时间】:2018-09-07 12:18:11
【问题描述】:
为什么在使用标准 xamarin uitest 结构运行所有测试时,Visual Studio 会为所有测试用例重新启动我的应用程序?
如何预防?
【问题讨论】:
标签: c# visual-studio xamarin.uitest
为什么在使用标准 xamarin uitest 结构运行所有测试时,Visual Studio 会为所有测试用例重新启动我的应用程序?
如何预防?
【问题讨论】:
标签: c# visual-studio xamarin.uitest
Xamarin UItest 重新启动应用(并默认清理应用数据)以确保每个测试的环境干净。
假设测试失败。该测试将使应用程序处于后续测试可能未预料到的状态。因此,后续测试会因为一个测试一开始就失败而失败。
不建议禁用该行为,但您可以使用
ConfigureApp
.Android // .iOS respectively
// ...
.ConnectToApp();
而不是
ConfigureApp
.Android // .iOS respectively
// ...
.StartApp();
【讨论】:
StartApp(AppDataMode.DoNotClear) 的 IF DEBUG 方法。但是,我猜这些都必须被应用中心忽略。我希望你确认一下?
你也可以试试:
ConfigureApp
.iOS // .Android
.StartApp(AppDataMode.DoNotClear);
【讨论】:
如果您使用的是 NUnit,请尝试使用 [TestFixtureSetUp] 而不是 [SetUp]。这样设置就会执行一次 pro Test Fixture。
([TearDown] 将有助于避免问题,以防夹具中的一项测试失败并且不会将 App 返回到“开始”状态)
【讨论】:
Xamarin.UITest 遵循 Nunit 框架。在编写应用启动代码的每个测试之前调用 [Setup] 属性方法。
如果您的意图是为所有测试用例仅启动一次应用程序,您可以在具有 [SetUpFixture] 的类内的 [OneTimeSetUp] 属性方法中执行此操作
示例(NUnit3)
[SetUpFixture]
public class BaseTextFixture
{
public BaseTextFixture()
{
}
[OneTimeSetUp]
public void Init()
{
// this method is called only one time for all tests
}
}
【讨论】: