C# 單元測試與 Moq 物件快速上手

    從入門到實務,詳細講解專有名詞和艱澀的物件導向技術,告訴你如何最有效率的撰寫單元測試,讓你快速掌握精隨,輕鬆進入 CI 持續整合的門檻!​

    72
    5.0
    • 從軟體開發常見問題探討 Unit Test 重要性,因為軟體開發中花費最多的成本就是「測試」,透過單元測試的定義與原則,來了解一般業界要撰寫單元測試的「困難點」在哪裡?並希望透過單元測試的定義與原則跨出第一步,體驗如何透過單元測試的「可測試行為」來定義系統的「複雜度」進而避免系統花費過多的測試成本。

    • 透過實務上,專案開發中的軟體修復成本與時間的關係來了解,為什麼撰寫單元測試能夠降低專案開發的成本?

    • 了解實務上如何替 Legacy Code 撰寫單元測試?所謂的測試的最小單位是什麼...等概念。

    • 如何透過「擷取介面以便替換底層實作內容」來達到隔離相依,除了增加可測試性外,因為有了可測試性的同時也增加了「可維護性」、「延展性」,讓我們容易的撰寫「虛設常式」來達到只測試「邏輯」又斷絕與外部系統的相依。

    • 如何使用 Moq,並了解與上方手刻虛設常式的差異,真正學習到實務上面臨的難題,並如何一一克服。

    US$93.77

    按一下 進入設定

    00:00
    00:00
    00:00

    寫單元測試遇到阻礙,不知道如何解決嗎?

    # 帶你進入單元測試 Unit Test 的大門

    近年來越來越多團隊與專案都開始重視單元測試的重要性,您還是認為撰寫單元測試很浪費時間嗎?或者是撰寫單元測試總是要花費很多的時間?但是撰寫程式碼時,又常常改東壞西?也很難預估程式碼撰寫與完成的時間?撰寫了單元測試後,之後又要花很多時間來維護這套單元測試專案,變成要多維護一套程式的窘境嗎?

    這是一堂由淺入深的 C# 單元測試 (Unit Test) 的課程,即便您無任何單元測試的基礎,只要您有 C# 的 1-2 年左右開發經驗,不管是網頁 ASP.NET Web Form 或 MVC 又或者是 Windows Form 或 WPF 的開發經驗,都可經由本課程提供的單元測試理論基礎,快速上手、並運用在實務開發上,享有撰寫單元測試的好處與掌握軟體測試的精隨。


    軟體開發中,單元測試可實際幫助你

    # 了解系統的複雜度 + 解決外部依賴

    • 系統複雜度越高,代表職責越容易牽扯在一起
    • 複雜度高,也代表不好維護,通常是重構的優先選擇
    • 重構前,撰寫測試
    • 外部依賴越強,代表耦合性越強,代表越難進行測試
    • 如果因為外部依賴強,導致撰寫(測試/模擬)成本過高,那麼就建議直接撰寫整合測試
    • 在有整合測試的保護下,後續對 Legacy Code 撰寫 Unit Test才有個後盾


    讓維運更輕鬆的關鍵!盤點撰寫單元測試的9大好處

    • 讓您容易發現系統中的壞味道
    • 讓您在需求異動時,維護成本降至最低
    • 讓您進行回歸測試時成本降至最低
    • 讓您重構時,不必擔心改壞程式碼
    • 讓您新增功能時,不必擔心影響舊有程式碼
    • 讓您不間斷的 Review Code 是否具備足夠維護性
    • 讓您團隊間不同成員銜接更加容易
    • 讓您的團隊容易制定標準與規範
    • 讓您容易將測試的工作自動化


    課程中將會學到

    理論串接實作,扎穩基本功


    • 為什麼要撰寫測試?與撰寫單元測試的好處?
    • Unit Test 概論,從軟體開發常見問題探討 Unit Test 重要性
    • 單元測試須具備的特性
    • 單元測試的 3A 原則(Arrange, Act, Assert)
    • 撰寫單元測試的時機點
    • 撰寫單元測試的目的
    • 建立第一個單元測試專案
    • Moq Framework 與 Microsoft Fakes 物件概念
    • 如何透過 Unit Test 設計出低相依性、耦合度低的軟體
    • 使用 Moq 在測試期間隔離程式碼
    • 幾款 Mock Framework 介紹
    • 結合自動化測試 Team Build (CI, Continuous Integrated)
    • 何謂 TDD?-> (2021/07/14 新增章節)


    章節目錄

    • 1-1
      (1). 撰寫單元測試的好處

    試閱影片

    常見問答

    如果您購買的是募資課程,請在課程的【簡介】中查看開課時間,募資課程將於開課時間所述日期開放同學上課。

     

    若您購買的是一般課程(開放上課課程),則在購買完成後可以立即開始觀看。

     

    所有線上課程皆不受時間限制,享無限次永久觀看!

    猜你喜歡

    購買前問答

    alan
    alan

    想請問說,

    1. 關於在寫測試的時候,程式裡面Service 服務層的Code存在於

    Expression<Func<T, bool>> 這類的 

    我們再用Moq做 Mock ,要怎麼樣去做說

    假設找會員

    (x=>x.Id==1)  Return 回我 自己建立的User資料

    (x=>x.Id == 2) Return 回我空值 這類的狀況嗎

     

    2. 另外說 通常Code裡面如果存在於 Static的東西在的話,這時候會是需要怎麼做測試?

     

    3. 通常在寫測試的時候,可能一個Function

    可能我們就是為了這一個Function會寫上好幾個測試嗎

    比如說 這個數值超過了99 所以發出了Exception ,這時我要去驗證他的Execption 是不是正確

    這個Id 不存在 所以發出了Exception,這時我也要去驗證他的Exception是不是正確的

    是這樣因為一個Function要寫到好多個測試嗎??

     

    4. 想問說 那關於 呼叫API那段 該怎麼做 Moq測試呢??

    或是我們要怎麼去測試我們 API那端回傳給我們錯誤的時候,我們是不是正確的告知使用者正確的錯誤訊息

     

    比如銀行API告知存款不足無法轉帳,要怎麼驗證我們給予給予前端的是正確的訊息

    Gelis
    Gelis
    問題 1. 
    答:你在撰寫測試時,在 Arrange 時是需要需要 Prepare Target 物件與 expected/actual 需要的測試資料,只要是 C# 內建型態都可以測試,應該不是問題。

    問題 2. 
    答:直接測試!如果能將該 static 的邏輯抽離出來更好,那麼就只需要對該邏輯進行測試即可。

    問題 3. 
    答:對的。通常一個 function 因為邏輯的(正/反)可能會寫兩個以上的測試。
    幾個例子:我有一個 Console CLI 工具程式,它可以傳入一個 -h 2020-01-01 像這樣的參數,但是它可能打錯像是漏了-h後面的時間等等,或者是時間格是打錯,如果想要驗證些情況是否都會如預期的結果光是這個 function 我就最少需要 3 個測試:

    (1). 測試 -h yyyy-MM-dd 完整的情況 => 系統會如預期執行
    (2). 測試 -h yyyy-MM- 日期格式錯誤的情況 => 系統會如預期回傳錯誤
    (3). 測試 -h  缺少日期的情況 => 系統會如預期回傳錯誤

    問題 4. 
    答:這問題其實與 2 相同,你的邏輯要能夠切開,最少實現 DI,那麼就容易抽離並只測試能否回傳錯誤訊息。

    銷售方案