使用文件

Xamarin.UITest 测试可能会将本地文件用于各种测试数据。 在测试App Center运行这些测试时,默认情况下不会随测试一起上传这些文件。 这通常会导致测试在测试App Center依赖于本地文件时失败。

文件必须包含在测试上传中,使测试在测试运行期间能够访问。 在测试上传中包含文件的方法有两种:嵌入文件和**包含的文件

嵌入文件

一种方法是将文件作为嵌入资源包含在 Xamarin.UITest 项目中。 这会将文件捆绑到 Xamarin.UITest 项目程序集中。 这适用于App Center测试,没有命令的附加参数 appcenter test run ... 或参数。

下面是一些代码,演示如何在运行时从 C# 测试访问嵌入资源 :EmbeddedResources。 使用的主要代码是 SharedLibResourceLoader.cs。 在 Xamarin.UITest 项目中包括它,并取消注释便利方法。

将文件作为嵌入资源包含在 Xamarin.UITest 项目中,只需在 解决方案资源管理器 中选择它们,然后选择"生成操作>嵌入资源"。 在 Mac 上,单击或右键单击该文件以查看选项。

然后,运行时,从 Xamarin.UITest 代码访问作为嵌入资源的文件。 这些代码片段显示如何使用上述代码片段来 (SharedLibResourceLoader 嵌入) :

// Read the text file as a string
String contents = ResourceLoader
    .GetEmbeddedResourceString("TestFileOne.txt");

// Read the text file line by line
StreamReader stream = new StreamReader(ResourceLoader
    .GetEmbeddedResourceStream("TestFileOne.txt"));

String line1 = stream.ReadLine();
String line2 = stream.ReadLine();
...

包含的文件

另一种方法是使用命令行选项,通过 --include Xamarin.UITest 项目上传文件。

--include <file-or-directory>

若要进行设置,以便它在本地使用与 App Center Test 中相同的代码和文件配置,将文件或文件夹放在 Xamarin.UITest 项目的顶级文件夹中。

对于每个文件,请将属性设置为 Copy to Output Directory 。 在 Windows 上的解决方案资源管理器中选择文件,然后选择 " 复制到输出目录" > copy (如果较新)或 " 复制到输出目录" > "始终复制"。 在 Mac 上,单击或右键单击该文件,然后选择 " 快速属性" > 复制到输出目录"。 如果包含文件夹,则对文件夹中的每个文件重复此步骤。

采用这种方法,文件在本地执行时在运行时位于生成目录中。 下面的代码段在运行时访问文件:

StreamReader s = new StreamReader("TestFileTwo.txt");

// Read DataFileOne.txt in the folder Data
StreamReader s = new StreamReader("./Data/DataFileOne.txt")

上述文件引用相对于生成 UITest 代码的位置。 这在本地和 App Center 测试中都有效。 如果对本地计算机上运行的完整路径进行硬编码,但该路径在 App Center 测试中失败。

若要将文件上载到 App Center 测试,请使用 --include 命令中的选项 appcenter test run ... 。 下面的片段作为完整命令的一部分,上传 TestFileTwo.txt 或文件夹数据。

--include TestFileTwo.txt

--include Data

文件上传 UITest 项目,并使用相同的 UITest 代码在本地 (读取它们) 在 App Center 测试运行时运行。

--include在命令行上多次使用该选项可包含多个文件或多个目录。

获取帮助

可以在 App Center 门户中联系支持人员。 在屏幕右上角,选择 "帮助 (? ) " 菜单,然后选择 "联系支持人员"。 我们的专职支持团队将响应你的问题。

如果你想要帮助测试运行,请导航到相关的测试运行,并从浏览器中复制该 URL 并将其粘贴到支持会话中。 测试运行 URL 类似于 https://appcenter.ms/orgs/OrgName/apps/App-Name/test/runs/77a1c67e-2cfb-4bbd-a75a-eb2b4fd0a747