Xamarin UI 测试:运行 iOS & Android 使用一个构建配置进行测试

Xamarin UI Tests: Running both iOS & Android tests with one build config

所以,我正在 Mac,使用 Visual Studio 和 Xamarin UI 测试 运行 ui 测试真实 iphone 和真正的 android 设备。

我有 classic 测试夹具设置,其中 Android 和 IOS 作为测试的不同变体。

    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class Tests
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }
    }
}

这是我的设备应用程序配置,我没有使用设备 ID,而是在 运行 时间 IDE 中指定了设备:

 public static void StartApp()
        {

            if (Platform == Platform.Android)
            {
                _app = ConfigureApp
                    .Android
                    .InstalledApp(appBundleName)
                    .EnableLocalScreenshots()
                    .PreferIdeSettings()
                    .StartApp(AppDataMode.Clear);
            }

            if (Platform == Platform.iOS)
            {
                _app = ConfigureApp
                    .iOS

                    .InstalledApp(appBundleName)
                    .PreferIdeSettings()
                    .EnableLocalScreenshots()
                    .StartApp(AppDataMode.Clear);
            }
        }
    }

这在我 运行 单个平台上的测试时有效——即,注释掉 IOS 平台夹具和 运行 仅 Android 测试,反之亦然反之亦然。但是,如果我有两个平台的文本固定装置,并尝试 运行 所有测试,我 运行 就会遇到测试无法找到其中一个设备的问题。发现,比如说,android 很好,那些测试 运行 符合预期,但是所有 ios 测试都失败了。

我怀疑这与我的 build 配置有关,因为更喜欢 IDE 设置似乎依赖 build 配置来设置目标设备应用。但是,我想检查一下——是否可以使用 "prefer ide" 设置在 IOS 和 ANDROID 平台上进行 运行 测试?我已经在我的测试板上设置了测试应用程序,它们似乎都针对真实设备。

我想出了我自己的问题,我想我会 post 它以防它对其他人有用。

总而言之,无论出于何种原因,您都不能对两个平台都使用 .PreferIdeSettings()。 Visual Studio Mac 似乎只知道如何为每个目标设备的每个项目指定一个构建配置。也许如果其他人设置了一个项目,其中不同的应用程序将共享一个构建配置,则可以解决这个问题。事实上,我发现我必须至少指定一个平台的设备 ID,才能成功地对两个平台的目标设备进行测试。