C# 为什么操作不执行函数?

C# 为什么操作不执行函数?,c#,unit-testing,action,xunit,C#,Unit Testing,Action,Xunit,我正在用xUnit对我的验证器进行单元测试,有一种情况是action不执行函数 验证器能够抛出异常,还能够填充包含错误消息的列表。shouldThroException参数定义验证器应该和不应该引发异常的时间。如果不是预期的,则应填充errorCollection 此测试失败,因为当代码进入else操作时,不会调用ValidateEmailAddress,至少在我使用调试器查看代码时,我看到了这一点。因此,errorcollection没有填充,测试失败 如何确保操作调用ValidateEmai

我正在用xUnit对我的验证器进行单元测试,有一种情况是action不执行函数

验证器能够抛出异常,还能够填充包含错误消息的列表。
shouldThroException
参数定义验证器应该和不应该引发异常的时间。如果不是预期的,则应填充errorCollection

此测试失败,因为当代码进入else操作时,不会调用ValidateEmailAddress,至少在我使用调试器查看代码时,我看到了这一点。因此,errorcollection没有填充,测试失败

如何确保操作调用ValidateEmailAddress

[Theory]
[MemberData("StringValidatorValidateEmailAddressShouldPopulateErrorCollection")]
public void StringValidator_ValidateEmailAddress_ShouldPopulateErrorCollection(
    int order,
    string emailAddress,
    List<string> errorCollection,
    bool shouldThroException,
    int expectedAmountOfErrorsInErrorCollection)
{
    // Given

    // When
    Action action = () => this.stringValidator.ValidateEmailAddress(emailAddress, errorCollection);

    // Then
    if (shouldThroException)
    {
        action.ShouldThrowExactly<InvalidEmailAddressDigitalLibraryValidationException();
    }
    else
    {
        action.ShouldNotThrow();
    }
    errorCollection.Count.Should().Be(expectedAmountOfErrorsInErrorCollection);
}

public static IEnumerable<object[]> StringValidatorValidateEmailAddressShouldPopulateErrorCollection
{
    get
    {
        return new List<object[]>
        {
           new object[] { 3, "asd@c", new List<string>(), false, 1 };
        }
    }
}
[理论]
[成员数据(“StringValidatorValidateEmailAddressShouldPopulateErrorCollection”)]
public void StringValidator\u ValidateEmailAddress\u ShouldPopulateErrorCollection(
整数阶,
字符串电子邮件地址,
列出错误集合,
布尔不应该有例外,
int ExpectedAmountofErrorsErrorCollection)
{
//给定
//什么时候
Action Action=()=>this.stringValidator.ValidateEmailAddress(emailAddress,errorCollection);
//然后
if(shouldThroException)
{
我不知道为什么

action.ShouldNotThrow();
未调用validateEmailAddress,但我已找到解决方法。如果我调用

action.ShouldNotThrowExactly<InvalidEmailAddressDigitalLibraryValidationException>();
action.shouldnothrowexactly();
然后我得到了预期的结果