驗證回傳值
定義
驗證回傳的結果與預期相符合。
流程
測試情境
- 有一個類別 LogAnalyzer,這類別提供 Log 相關的功能。
- 有一個方法
IsValidLogFileName
,可以用來檢查 log 檔案的附檔名是符合規範,且不區分大小寫。 - 需要撰寫單元測試驗證這個方法的正確與否。
warning
下面的範例內容都很單純,不過不同測試框架的作法或是功能上會略有不同,寫法無法完全一致。
如果需要搭配練習,建議理解後,依目前自己正在使用/學習的工具嘗試看看。
以下範例的實際專案可以參考這裡
範例
- LogAnalyzer
- LogAnalyzerTests
namespace Lab.Test.Unit.LogNotification;
public class LogAnalyzer
{
public bool IsValidLogFileName(string fileName)
{
var isValid = fileName.EndsWith(".SLF", StringComparison.CurrentCultureIgnoreCase);
return isValid;
}
}
namespace Lab.Test.Unit.LogNotificationTests;
[UnitTest("LogAnalyzer")]
public class LogAnalyzerTests
{
private readonly LogAnalyzer _sut = new LogAnalyzer();
[Fact(DisplayName = "IsValidLogFileName_附檔名有誤_回傳 false")]
public void IsValidLogFileName_BadExtension_ReturnFalse()
{
// arrange
// var sut = new LogAnalyzer();
// act
var expected = this._sut.IsValidLogFileName("filewithbadextension.foo");
// assert
expected.Should().BeFalse();
}
[Theory(DisplayName = "IsValidLogFileName_附檔名正確且不區分大小寫_回傳 True")]
[InlineData("filewithgoodextension.slf")]
[InlineData("filewithgoodextension.SLF")]
public void IsValidLogFileName_GoodExtensionLowerCase_ReturnTrue(
string fileNmae)
{
// arrange
// var sut = new LogAnalyzer();
// act
var expected = this._sut.IsValidLogFileName(fileNmae);
// assert
expected.Should().BeTrue();
}
}