【问题标题】:why does Xamarin UITest restart app between tests?为什么 Xamarin UITest 在测试之间重新启动应用程序?
【发布时间】:2018-09-07 12:18:11
【问题描述】:

为什么在使用标准 xamarin uitest 结构运行所有测试时,Visual Studio 会为所有测试用例重新启动我的应用程序?

如何预防?

【问题讨论】:

    标签: c# visual-studio xamarin.uitest


    【解决方案1】:

    Xamarin UItest 重新启动应用(并默认清理应用数据)以确保每个测试的环境干净。

    假设测试失败。该测试将使应用程序处于后续测试可能未预料到的状态。因此,后续测试会因为一个测试一开始就失败而失败。

    不建议禁用该行为,但您可以使用

    ConfigureApp
        .Android // .iOS respectively
        // ...
        .ConnectToApp();
    

    而不是

    ConfigureApp
        .Android // .iOS respectively
        // ...
        .StartApp();
    

    【讨论】:

    • 为什么它可以在本地工作,但不能在 Visual Studio Appcenter 上工作?
    • @UbaidRana 你明白了吗。我只是在考虑尝试使用StartApp(AppDataMode.DoNotClear) 的 IF DEBUG 方法。但是,我猜这些都必须被应用中心忽略。我希望你确认一下?
    【解决方案2】:

    你也可以试试:

    ConfigureApp
      .iOS // .Android
      .StartApp(AppDataMode.DoNotClear);
    

    【讨论】:

      【解决方案3】:

      如果您使用的是 NUnit,请尝试使用 [TestFixtureSetUp] 而不是 [SetUp]。这样设置就会执行一次 pro Test Fixture。

      ([TearDown] 将有助于避免问题,以防夹具中的一项测试失败并且不会将 App 返回到“开始”状态)

      【讨论】:

        【解决方案4】:

        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
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2020-06-20
          • 1970-01-01
          • 1970-01-01
          • 2014-10-19
          • 2020-02-14
          • 2023-03-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多