所以,我在Mac上,使用Visual Studio和Xamarin UI测试在真实的iphone和真实的android设备上运行ui测试。
我已经将Android和IOS的classic测试装置设置为测试的不同变体。
[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测试均失败。
我怀疑这与我的构建配置有关,因为更喜欢IDE设置似乎依赖于构建配置来设置应用程序的目标设备。但是,我想检查一下-是否可以使用“ prefer ide”设置在IOS和ANDROID平台上运行测试?我已经在测试板中设置了测试应用程序,并且两者似乎都针对实际设备。
我想出了自己的问题,以为可以将其发布,以防对其他人有用。
总而言之,无论出于何种原因,两种平台都不能使用.PreferIdeSettings()
。 Visual Studio Mac似乎只知道如何为每个目标设备的每个项目指定一个构建配置。也许如果其他人设置了一个项目,不同的应用程序将共享一个构建配置,则可以解决此问题。实际上,我发现我必须至少指定一个平台的设备ID才能成功将测试成功定位到两个平台的目标设备。