如何在Xamarin.UITest项目中使用WireMock.Net?

如何在Xamarin.UITest项目中使用WireMock.Net?,xamarin,xamarin.forms,wiremock,xamarin.uitest,mockserver,Xamarin,Xamarin.forms,Wiremock,Xamarin.uitest,Mockserver,我的UITest项目与原始web服务器配合得很好,但我想用模拟服务器替换它。我已经在一个非UITest项目中成功地使用了它。以下是我在UI测试项目中的代码: [设置] 每个测试前的公共无效() { app=AppInitializer.StartApp(平台); } [一次性设置] public void InitializerOnce() { _mockServer=WireMockServer.Start(新的WireMockServerSettings() { URL=new[]{”htt

我的UITest项目与原始web服务器配合得很好,但我想用模拟服务器替换它。我已经在一个非UITest项目中成功地使用了它。以下是我在UI测试项目中的代码:

[设置]
每个测试前的公共无效()
{
app=AppInitializer.StartApp(平台);
}
[一次性设置]
public void InitializerOnce()
{
_mockServer=WireMockServer.Start(新的WireMockServerSettings()
{
URL=new[]{”http://localhost:12345/"},
ReadStaticMappings=true
});
_mockServer.Given(
Request.Create().WithPath(“*”).UsingAnyMethod())
.RespondWith(Response.Create())
.WithStatusCode(HttpStatusCode.OK)。WithBody(“示例响应!”);
}
[onetimeeartown]
公共无效处置()
{
_mockServer?.Stop();
}
[测试]
公共异步任务测试()
{
点击(c=>c.标记(“我的按钮”);
等待任务。延迟(5000);
//断言
Assert.IsTrue(真);
}
私有WireMockServer\u mockServer;
我的主要Android项目有以下代码:


已单击私有异步无效操作(对象发送方,事件参数e)
{
尝试
{
var client=新的HttpClient();
var response=wait client.GetAsync(“http://10.0.2.2:12345/test“”;//它是正确的url吗???
var result=await response.Content.ReadAsStringAsync();
wait UserDialogs.Instance.AlertAsync($“状态:{response.StatusCode},结果:{result}”);
}
捕获(异常)
{
等待UserDialogs.Instance.AlertAsync(exception.ToString());
}
}
点击按钮的结果如下:


在单元测试中,在随机端口而不是固定端口上运行WireMock.Net。否则,在构建服务器上运行这些单元测试时可能会遇到问题,无法100%保证此端口在操作系统上可用

我的建议是在没有固定端口的情况下启动WireMock.Net。就像:

var server=WireMockServer.Start();
//获取运行WireMock.Net服务器的随机端口,可以按如下方式完成:
var port=server.port[0];
//或者,您也可以获取运行WireMock.Net服务器的完整URL,其中包括:
var url=server.url[0];
因此,在您的情况下,请使用:

var url=_mockServer.url[0];
var response=await client.GetAsync(url+“/test”);

我不认为这是端口问题,因为我可以在Android emulator和设备上的集成测试中成功使用WireMock.Net。您确定WireMock.Net服务器在按下该按钮的那一刻仍在运行吗?(比如:WireMock.Net是作为独立的、web api还是docker运行的?)