读书笔记-单元测试艺术(二)-单元测试框架
生活随笔
收集整理的這篇文章主要介紹了
读书笔记-单元测试艺术(二)-单元测试框架
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、說明
本次筆記所有的代碼是在VS2013下運行的,使用的nunit.framework.dll版本為3.2.1.0,Reshaper版本為8.2.3
1.xUnit測試框架
大部分單元測試框架的名字中,開頭通常是一個字母(代表實現它們的編程語言),如針對Java的JUnit
二、一個完整的例子
1.程序結構
2.編寫LogAnalyzer.cs
namespace LogAn {public class LogAnalyzer{public bool IsValidLogFileName(string fileName){if (!fileName.EndsWith(".SLF")){return false;}else{return true;}}} }3.編寫LogAnalyzerTest.cs
說明:
[TestFixture]加在一個類上,標識這個類是一個包含自動化NUnit測試的類
[Test]加在一個方法上,標識這個方法是一個需要調用的自動化測試
測試方法的命名規范,一般包含三個部分:[被測方法]_[場景]_[預期行為]
注意:
NUnit測試方法的返回類型必須是void類型,并且不接受任何參數
namespace Manulife.LogAn.UnitTests {[TestFixture]public class LogAnalyzerTests{[Test]public void IsValidFileName_validFile_ReturnTrue(){//arrange(配置)LogAnalyzer analyzer = new LogAnalyzer();//act(操控)bool result = analyzer.IsValidLogFileName("whatever.slf");//assert(斷言)Assert.IsTrue(result, "filename should be valid!");}} }4.運行所有測試查看結果
三、NUnit其他特性
[SetUp]會在每一次運行測試類中的一個測試方法之前都會執行setup方法
[TearDown]會在測試類中的每一個測試方法運行結束后,執行一次
[TestFixtureSetUp]運行在一個測試類中的所有測試運行之前設置狀態
[TestFixtureTearDown]在測試運行結束后進行清理
重寫測試類
namespace Manulife.LogAn.UnitTests {[TestFixture]public class LogAnalyzerTests{private LogAnalyzer analyzer = null;[SetUp]public void SetUp(){analyzer = new LogAnalyzer();}[Test]public void IsValidFileName_validFileLowerCased_ReturnTrue(){//act(操控)bool result = analyzer.IsValidLogFileName("whatever.slf");//assert(斷言)Assert.IsTrue(result, "filename should be valid!");}[Test]public void IsValidFileName_validFileUpperCased_ReturnTrue(){//act(操控)bool result = analyzer.IsValidLogFileName("whatever.SLF");//assert(斷言)Assert.IsTrue(result, "filename should be valid!");}[TearDown]public void TearDown(){analyzer = null;}} } View Code執行過程
四、驗證預期的異常
1.修改LogAnalyzer.cs
namespace LogAn {public class LogAnalyzer{public bool IsValidLogFileName(string fileName){if (string.IsNullOrEmpty(fileName)){throw new ArgumentException("No filename provided!");}if (!fileName.EndsWith(".SLF")){return false;}else{return true;}}} } View Code2.測試類中添加以下
[Test]public void IsValidFileName_EmptyFileName_ThrowException(){Exception ex = Assert.Catch<Exception>(() => analyzer.IsValidLogFileName(string.Empty));StringAssert.Contains("No filename provided!", ex.Message);}五、忽略測試
修改以下方法
[Test] [Ignore("這個測試有問題")] public void IsValidFileName_validFileLowerCased_ReturnTrue() {//act(操控)bool result = analyzer.IsValidLogFileName("whatever.slf");//assert(斷言)Assert.IsTrue(result, "filename should be valid!"); }六、設置測試類別
修改以下方法
[Test][Category("運行快點測試")]public void IsValidFileName_validFileUpperCased_ReturnTrue(){//act(操控)bool result = analyzer.IsValidLogFileName("whatever.SLF");//assert(斷言)Assert.IsTrue(result, "filename should be valid!");}七、參數化重構單元測試
添加以下測試方法
[TestCase("somefile.slf")][TestCase("somefile.SLF")]public void IsValidFileName_ValidExtensions_ReturnsTrue(string fileName){bool result = analyzer.IsValidLogFileName(fileName);Assert.AreEqual(true,result);}轉載于:https://www.cnblogs.com/kimisme/p/5562127.html
總結
以上是生活随笔為你收集整理的读书笔记-单元测试艺术(二)-单元测试框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的第一份工作之旅
- 下一篇: 黑客道诠释完整版1-7