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,才能成功地对两个平台的目标设备进行测试。
所以,我正在 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,才能成功地对两个平台的目标设备进行测试。