一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - ASP.NET教程 - Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

2020-06-05 16:23Ron.liang ASP.NET教程

這篇文章主要給大家介紹了關(guān)于Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

在進(jìn)行 Asp.Net Core 應(yīng)用程序開發(fā)過程中,通常的做法是先把業(yè)務(wù)代碼開發(fā)完成,然后建立單元測(cè)試,最后進(jìn)入本地系統(tǒng)集成測(cè)試;在這個(gè)過程中,程序員的大部分時(shí)間幾乎都花費(fèi)在開發(fā)、運(yùn)行、調(diào)試上,而且一再的重復(fù)這個(gè)過程,我稱這個(gè)過程為“程序員開發(fā)螺旋”,并且在這個(gè)步驟中,重復(fù)率最高且沒有創(chuàng)造力的工作就是啟動(dòng)、測(cè)試,作為程序員,努力提高生產(chǎn)力我們追求的目標(biāo),我們的工作就是盡量消滅重復(fù)勞動(dòng),解放生產(chǎn)力,提高產(chǎn)出效率;

下面就通過一個(gè)簡(jiǎn)單的例子來演示,如何通過文件監(jiān)視進(jìn)行快速開發(fā)。

本示例將會(huì)使用兩個(gè)項(xiàng)目用作演示,如下圖

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

1. 建立業(yè)務(wù)項(xiàng)目 UserCenterDemo

1.1 在 UserCenterDemo.HomeController 里面編寫一個(gè)簡(jiǎn)單的業(yè)務(wù)方法

?
1
2
3
4
5
6
7
8
9
10
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
int code = 0;
string userName = string.Empty;
switch (id)

該業(yè)務(wù)方法非常簡(jiǎn)單,僅根據(jù)傳入的 id 值進(jìn)行判斷,如果不是 100 則返回 code=403

2. 建立 xUnit 單元測(cè)試項(xiàng)目 UserCenterDemoTest

2.1 引用項(xiàng)目 UserCenterDemo 和引用 NuGet 包

?
1
2
Microsoft.AspNetCore.App
Microsoft.AspNetCore.TestHost

UserCenterDemo 使用了主機(jī)集成測(cè)試方式,對(duì)主機(jī)集成測(cè)試不了解到同學(xué),可以查看我上一篇博客: Asp.Net Core 輕松學(xué)-利用xUnit進(jìn)行主機(jī)級(jí)別的網(wǎng)絡(luò)集成測(cè)試.

2.2 編寫測(cè)試用例 UserCenterDemoTest.HomeControllerTest.cs

?
1
2
3
4
5
6
7
8
9
10
public class HomeControllerTest
{
public static TestServer serverHost;
public static HttpClient client;
public HomeControllerTest()
{
if (serverHost == null)
{
serverHost = new TestServer(new WebHostBuilder().UseStartup<UserCenterDemo.Startup>());
client = serverHost.CreateClient();

該測(cè)試包含兩個(gè)測(cè)試方法,分別是獲取 id=100 的用戶和 id=0 的 Guest 用戶

3. 使用 dotnet watch 進(jìn)行監(jiān)視測(cè)試

按照以往的開發(fā)習(xí)慣,我們現(xiàn)在應(yīng)該做的事情可能有兩個(gè),一是啟動(dòng)項(xiàng)目使用瀏覽器進(jìn)行訪問業(yè)務(wù)接口 Get ,二是運(yùn)行單元測(cè)試,不管怎么樣,這兩個(gè)動(dòng)作都將消耗我們大量的時(shí)間

現(xiàn)在,有一種全新的選擇,我們可以通過使用 dotnet watch test 對(duì)項(xiàng)目文件進(jìn)行監(jiān)視變動(dòng),自動(dòng)運(yùn)行單元測(cè)試,并將測(cè)試結(jié)果輸出到控制臺(tái)

3.1 打開 cmd.exe 程序,切換到測(cè)試項(xiàng)目目錄 UserCenterDemoTest,輸入 dotnet watch test,等待運(yùn)行

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

上圖表示,當(dāng)我們輸入命令 dotnet watch test 后,監(jiān)視程序正在啟動(dòng),并在啟動(dòng)完成后立即執(zhí)行了一次單元測(cè)試,紅色方框部分表示有 2 個(gè)測(cè)試用例已通過,然后程序并沒有退出,而是在最后輸出了一個(gè)提示,正在等待文件變動(dòng)以重啟 dotnet 應(yīng)用程序

3.2 接下來我們修改測(cè)試用例 GetGuestTest 的斷言結(jié)果 code=0,看看發(fā)生了什么

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

可以看到,在修改完成保存文件的瞬間,程序立即重啟生成,然后執(zhí)行測(cè)試,測(cè)試結(jié)果斷言不通過
那么問題來了,上面只是監(jiān)視了測(cè)試項(xiàng)目,如果我們修改了 UserCenterDemo.Controllers ,能夠自動(dòng)監(jiān)視嗎,答案是肯定的

3.3 現(xiàn)在修改 UserCenterDemo.Controllers ,修改獲取 Guest 的 code=0,返回成功

?
1
2
3
4
5
6
7
8
9
10
[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
[HttpGet("{id}")]
public IActionResult Get(int id)
{
int code = 0;
string userName = string.Empty;
switch (id)

輸出結(jié)果,已自動(dòng)監(jiān)視執(zhí)行

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

為什么會(huì)這樣呢,因?yàn)槲覀兊臏y(cè)試項(xiàng)目引用了業(yè)務(wù)項(xiàng)目 UserCenterDemo
所以可以監(jiān)視到,查看 UserCenterDemoTest.csproj 文件,起作用的是以下代碼

?
1
2
3
<ItemGroup>
<ProjectReference Include="..\UserCenterDemo\UserCenterDemo.csproj" />
</ItemGroup>

5. 擴(kuò)展使用

5.1 如果你覺得總是不停的輸出各種信息讓你覺得很不友好,那么你可以排除監(jiān)視,比如移除對(duì) UserCenterDemo.csproj 的監(jiān)視,只需要增加配置 Watch="false" 即可

?
1
2
3
<ItemGroup>
<ProjectReference Include="..\UserCenterDemo\UserCenterDemo.csproj" Watch="false"/>
</ItemGroup>

5.2 獨(dú)立監(jiān)視

當(dāng)項(xiàng)目比較大的時(shí)候,我們可能需要對(duì)監(jiān)視項(xiàng)目進(jìn)行管理,這個(gè)時(shí)候再逐一的對(duì)每個(gè)項(xiàng)目進(jìn)行監(jiān)視設(shè)置就變得非常的麻煩,然后我們就可以建立一個(gè)單獨(dú)的文件夾,創(chuàng)建一個(gè) watch.csproj 文件,填如下面的內(nèi)容

?
1
2
3
4
5
6
7
8
9
<Project>
 <ItemGroup>
 <TestProjects Include="..\**\*.csproj" />
 <Watch Include="..\**\*.cs" />
 </ItemGroup>
 
 <Target Name="WatchManage">
 <MSBuild Targets="VSTest" Projects="@(TestProjects)" />
 </Target>

5.3 注意路徑,因?yàn)楸臼纠哪夸浗Y(jié)構(gòu)是這樣

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

所以文件中的監(jiān)視節(jié)點(diǎn)我必須加入 .. 回退到上一級(jí),上面的代碼表示,監(jiān)視上一級(jí)目錄下的 .csproj/.cs 文件變動(dòng),并為本次監(jiān)視管理命名為:WatchManage

5.4 現(xiàn)在進(jìn)入目錄 watch 輸入命令 dotnet watch msbuild /t:WatchManager

Asp.Net Core利用文件監(jiān)視進(jìn)行快速測(cè)試開發(fā)詳解

可以看到,已經(jīng)成功對(duì)兩個(gè)項(xiàng)目進(jìn)行變動(dòng)監(jiān)視

  • 通過本示例,我們了解到如何在項(xiàng)目開發(fā)過程中減少重復(fù)勞動(dòng),提高生產(chǎn)力的方法
  • 學(xué)習(xí)了 dotnet watch test 的使用方法
  • 掌握了在應(yīng)對(duì)項(xiàng)目繁多的時(shí)候,建立獨(dú)立文件監(jiān)視管理器的方法

示例代碼下載UserCenterDemo.rar

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

原文鏈接:https://www.cnblogs.com/viter/p/10098668.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩精品视频免费 | 驯服有夫之妇HD中字日本 | 四虎论坛| 女医学护士一级毛片 | 日本在线小视频 | 国产免费看片 | 午夜影院在线免费观看 | 久久久久久久伊人电影 | 国产成人99久久亚洲综合精品 | 国产rpg迷雾之风冷狐破解 | 九九九九九九精品免费 | 免费观看国产精品 | 国产91页| 毛片在线观看网站 | 欧美人伦禁忌.5 | 4hu永久地域网名入口 | 亚洲精品第五页 | 国产91精品在线观看 | 国产3344视频在线观看免费 | 久久热在线视频精品店 | 日韩欧美综合在线二区三区 | 我强进了老师身体在线观看 | 百合女女师生play黄肉黄 | 国模一区二区三区视频一 | 麻豆资源 | 色综合视频一区二区观看 | 糖心hd在线观看 | 九九99靖品 | 国产白白视频在线观看2 | 欧洲另类一二三四区 | 国产全部理论片线观看 | 万域之王动漫在线观看全集免费播放 | 亚洲AV国产精品无码精 | 欧美骚熟 | 大肥臀风间由美 中文字幕 大东北chinesexxxx露脸 | 欧美一级片在线免费观看 | 秋霞理论一级在线观看手机版 | 欧美成人免费草草影院视频 | 女人张开腿 让男人桶个爽 免费观看 | 国产亚洲综合精品一区二区三区 | xxoosex久久久久久 |