iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
DevOps

.NET Core 專案持續整合與部署系列 第 5

.NET Core CLI:restore、build 與 test 行為關係

  • 分享至 

  • xImage
  •  

TL;DR

Dotnet test 會以隱含的方式執行 dotnet build,所以不用另外再執行建置去檢查。這部分是透過 git 去檢查兩者產出物有何不同所證明的。

正文

在使用 .NET Core CLI 前就有一個疑惑,到底執行測試前,有沒有需要先執行建置,兩者有什麼相依關係嗎?或是執行測試就隱含著執行建置的行為?這一直是我心中的疑惑。

趁著改用 .NET Core CLI,我們來透過 Git 來協助我們確認這件事。以昨天的專案為環境進行研究。

# Location: ~/dotnet-sln
$ dotnet test
Test run for /Users/ironman/dotnet-sln/WebProj.Tests/bin/Debug/netcoreapp2.2/WebProj.Tests.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 16.2.0-preview-20190606-02
Copyright (c) Microsoft Corporation.  All rights reserved.

Starting test execution, please wait...

Test Run Successful.
Total tests: 1
     Passed: 1
 Total time: 1.2430 Seconds

$ git add ./
$ git commit -m "Snapshot all changed by dotnet test"

$ git build
Microsoft (R) Build Engine version 16.2.32702+c4012a063 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Restore completed in 30.3 ms for /Users/ironman/dotnet-sln/WebProj.Tests/WebProj.Tests.csproj.
  Restore completed in 33.59 ms for /Users/ironman/dotnet-sln/WebProj/WebProj.csproj.
  WebProj -> /Users/ironman/dotnet-sln/WebProj/bin/Debug/netcoreapp2.2/WebProj.dll
  WebProj -> /Users/ironman/dotnet-sln/WebProj/bin/Debug/netcoreapp2.2/WebProj.Views.dll
  WebProj.Tests -> /Users/ironman/dotnet-sln/WebProj.Tests/bin/Debug/netcoreapp2.2/WebProj.Tests.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   WebProj.Tests/obj/Debug/netcoreapp2.2/WebProj.Tests.csprojAssemblyReference.cache

透過這樣的實驗,我們發現執行完 dotnet test 後產出的檔案,和執行 dotnet build 後產出的檔案,只差在一個 cache 檔案。而其他主要的產出物,例如以 .dll 為副檔名的檔案是一樣的。所以幾乎可以認為執行測試就隱含著執行建置的行為。


上一篇
.NET Core CLI:管理 NuGet 套件
下一篇
Integrate:Git Hook
系列文
.NET Core 專案持續整合與部署31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言