preloader

測試

Nunit常用-NSubstitute常用的Stub和Mock和Try Catch

Nunit常用-NSubstitute常用的Stub和Mock和Try Catch

參數化測試和物件比對物件,比對物件會需要引入using FluentAssertions; [TestFixture] public class AddTest { [Test] [TestCase(1, 2)] [TestCase(2, 1)] public void TestAdd(int a, int b) { Assert.

單元測試

單元測試

寫這篇緣故 最近在幫公司講解關於單元測試的技術,擷取部分在91課程上寫測試要點還有自己寫測試的經驗,做一個整理,當作是幫公司培訓工程師之類 不過我建議還是給外面的老師指點和上一下會比較好,因為會比較清晰! 單元測試常見的名詞 SUT:System Under Test/Software Under Test 【待測程式】,在Unit就是待測試的項目,EX:我們要測的是類別、物件還是方法,都可以統稱 SUT。 DOC:Depended-on Component【相依元件】,例如:成立訂單函數,如果訂單失敗異常會寫入log,log函數就是成立訂單函數的DOC。 在實務上筆者在寫單元測試的時候,因為SUT會去呼叫其他的物件也會呈現出SUT依賴DOC, 在測試SUT勢必會有DOC存在,搞得測試很複雜。 單元測試的3A Arrange – 初始化-白話一點就是準備要測的資料,更詳細一點說穿就是在準備演員和劇本 Act – 執行測試的目標,並取得實際結果 Assert – 驗證結果 [TestClass] public class CalculatorTest { [TestMethod] public void Calculator_TenAddTwenty_ReturnThirty() { //Arrange var calc = new Calculator(); int x = 10, y = 20; //Act int actual = calc.

在遺留程式使用extract and override

在遺留程式使用extract and override

稍微記錄一下平常使用Extract and Override的技巧 這一支程式是一個帳單進行付款的行為,但要先進行客戶的資料基本檢驗,但是相依了Customer,要如何測試這一段程式碼, 因為原始程式碼相依耦合性依賴相當高,這會讓測試不好測試,最好的方式就是重構成Interface,但現實專案當中確實很難, 除非要有那個美國時間,讓你搞到好的設計。 在專案頻繁的功能再追加,可以考慮用Extract and Override技巧。 public class Bill { Customer customer = new Customer(); public bool Pay() { return customer.

單元測試-測試替身

在講Test Double以前,得先上搞清楚另外兩個 SUT:System Under Test/Software Under Test 【待測程式】,在Unit Test角度下待測程式會是method