所以,我在Mac上,使用Visual Studio和Xamarin UI Tests在一个真实的iphone和一个真实的android设备上运行ui测试。
我已经将classic测试夹具设置为安卓和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);
}
}
}这是我的设备应用配置,我在运行时在IDE中指定设备,而不是使用设备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测试,反之亦然。但是,如果我有两个平台的文本fixture,并尝试运行所有测试,我就会遇到测试找不到其中一个设备的问题。比方说,发现android运行得很好,这些测试也像预期的那样运行,但所有ios测试都失败了。
我怀疑这与我的构建配置有关,因为首选IDE设置似乎依赖于构建配置来为应用程序设置目标设备。但是,我想检查一下--是否可以在IOS和ANDROID平台上使用“首选ide”设置运行测试?我已经在我的测试板中设置了测试应用程序,而且这两个应用程序似乎都是针对真实设备的。
发布于 2020-02-01 05:13:46
我想出了我自己的问题,想把它贴出来,以防对其他人有用。
总之,无论出于什么原因,您都不能在两个平台上都使用.PreferIdeSettings()。Visual Studio Mac似乎只知道如何为每个目标设备的每个项目指定一个构建配置。也许如果其他人设置了一个项目,不同的应用程序将共享一个构建配置,这可以解决。实际上,我发现我必须至少指定一个平台的设备id,才能成功地对两个平台的目标设备进行测试。
https://stackoverflow.com/questions/60008493
复制相似问题