当前文章阅读前推荐阅读 OwinSelfHost自宿主的使用 文章
操作步骤与上述文章结构大致雷同:
第一步 新建控制台项目&&安装Nuget包
Install-package Microsoft.AspNet.WebApi.OwinSelfHost
第二步 新建操作类
Startup.cs
对OwinHost 所需的webapi配置
public class Startup
{
public void Configuration(IAppBuilder app)
{
var configuraton = new HttpConfiguration();
configuraton.MapHttpAttributeRoutes();
app.UseWebApi(configuraton);
}
}
ApiController
WebApi控制器的具体实例
public class CommentsController : ApiController
{
[Route("blogposts/{postId}/comments")]
public async Task<IHttpActionResult> Get(int postId)
{
var comments = new Comment[] { new Comment {
PostId = postId,
Body = "Coding changes the world1" } };
return Ok<Comment[]>(comments);
}
}
public class Comment
{
public int PostId { get; set; }
public string Body { get; set; }
}
新建测试类
CommentsWebApiTest
使用OwinHost的方法脱离IIS的WebApi测试类
public class CommentsWebApiTest : IDisposable
{
private const string HOST_ADDRESS = "http://localhost:8001";
private IDisposable _webApp;
private HttpClient _httClient;
public CommentsWebApiTest()
{
_webApp = WebApp.Start<Startup>(HOST_ADDRESS);
Console.WriteLine("Web API started!");
_httClient = new HttpClient();
_httClient.BaseAddress = new Uri(HOST_ADDRESS);
Console.WriteLine("HttpClient started!");
}
public void Dispose()
{
_webApp.Dispose();
}
[Fact]
public async Task GetComments()
{
var postId = 1;
var response = await _httClient.GetAsync($"http://localhost:8001/blogposts/1/comments");
if (response.StatusCode != HttpStatusCode.OK)
{
Console.WriteLine(response.Content.ReadAsStringAsync());
}
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
var comments = await response.Content.ReadAsAsync<Comment[]>();
Assert.NotEmpty(comments);
Assert.Equal(postId, comments[0].PostId);
Assert.Equal("Coding changes the world1", comments[0].Body);
}
}
测试标签和类库引用
image.png当使用测试标签的时候,[Fact],无法发现无法添加引用,如下图
图中所指示的地方如果出现引用问题,可以参照以下步骤进行引用
1.点击vs2017的工具->nuget包管理->解决方案的nuget程序包,在“”浏览“下输入“xunit”,选择xunit,然后选择步骤一中创建的项目,点击安装
image.png
2.其实此时的测试管理器根本就未运行单元测试,必须要借助xUnit中的运行环境,利用测试管理器来运行VS中的测试,此时我们继续在单元测试中通过NuGet安装xunit.runner.visualstudio,
点击vs2017的工具->nuget包管理->解决方案的nuget程序包,在“”浏览“下输入“xunit.runner.visualstudio”,选择xunit.runner.visualstudio,然后选择步骤一中创建的项目,点击安装
image.png
开始进行单元测试
编写单元测试代码后,右键点击“运行测试“”,即可执行单元测试,测试代码在后台直接运行,如果是点击“调试测试”,即可对测试单元进行断点调试
image.png点击“运行测试”后会在Vs编辑器下方出现一个"测试资源管理器",在其中可以对所有的单元测试结果进行查看,如下图所示
image.png
网友评论