目前文章閱讀前推薦閱讀 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);
}
}
複制
測試标簽和類庫引用
當使用測試标簽的時候,[Fact],無法發現無法添加引用,如下圖

圖中所訓示的地方如果出現引用問題,可以參照以下步驟進行引用
1.點選vs2017的工具->nuget包管理->解決方案的nuget程式包,在“”浏覽“下輸入“xunit”,選擇xunit,然後選擇步驟一中建立的項目,點選安裝
2.其實此時的測試管理器根本就未運作單元測試,必須要借助xUnit中的運作環境,利用測試管理器來運作VS中的測試,此時我們繼續在單元測試中通過NuGet安裝xunit.runner.visualstudio,
點選vs2017的工具->nuget包管理->解決方案的nuget程式包,在“”浏覽“下輸入“xunit.runner.visualstudio”,選擇xunit.runner.visualstudio,然後選擇步驟一中建立的項目,點選安裝
開始進行單元測試
編寫單元測試代碼後,右鍵點選“運作測試“”,即可執行單元測試,測試代碼在背景直接運作,如果是點選“調試測試”,即可對測試單元進行斷點調試
點選“運作測試”後會在Vs編輯器下方出現一個"測試資料總管?imageView2/2/w/1620",在其中可以對所有的單元測試結果進行檢視,如下圖所示