测试枚举和字符串 - .NET Core 3.1 和 xUnit

Testing for Enum and a String - .NET Core 3.1 and xUnit

我是 TDD 的新手,我有一个采用 Enumstring 的方法。读了一些书后,我发现测试一个 Enum 是不值得做的,除非你在 Enum class 中有一些方法(如果我错了请纠正我)。

我正在测试的其他方法很简单,接受一个 string,我检查 nullempty,但是当我使用这个方法时,我不确定是什么去做。

public string CreateLog(LoggerLevel level, string message)
{
    throw new System.NotImplementedException();
}

这是Enum

public enum LoggerLevel
{
    Verbose,
    Debug,
    Information,
    Warning,
    Error,
    Fatal
}

这是我打算如何处理 string 但在 CreateLog 方法中处理预期 enum 的最佳方法是什么:

[Fact]
public void CreateLog_MessageNullOrEmpty()
{
    var logger = new Logger();

    Assert.Throws<MessageNullOrEmptyException>(() => logger.CreateLog(enum???, null));

    Assert.Throws<MessageNullOrEmptyException>(() => logger.CreateLog(enum???, ""));
}

我正在考虑使用 [InlineData(LoggerLevel.Verbose), ""][InlineData(LoggerLevel.Debug), null]。或者在测试方法中创建一个虚拟 enum 并将其传入。

解决这种情况的最佳方法是什么?

我不知道我是否理解得很好,但是如果在上面的测试中只有字符串很重要,你可以使用 It.IsAny<T> 模拟枚举,来自 Moq 包。

顺便说一句,如果您不定义 Nullable,Enum 参数永远不会为 null。