我收到以下错误:“以下构造函数参数没有匹配的fixture数据:AddressValidator addressValidator”

时间:2018-06-19 06:59:38

标签: xunit xunit.net

  • ValidatorTest类具有所有验证的通用方法。
  • 测试用例已通过但在传递后我收到此错误。

我可以编写可以完成这项工作的扩展方法但是我没有得到xunit的问题。任何帮助表示赞赏。

namespace TestSuite.Validator
{
    public abstract class ValidatorTest<TClass,TClassValidator> where TClassValidator: AbstractValidator<TClass>
    {
        private readonly TClassValidator _tClassValidator;
        public ValidatorTest(TClassValidator validator)
        {
            _tClassValidator = validator;
        }
        public void Address_Should_ReturnValidationError_When_MandatoryFieldsAreNotPassed(TClass address, List<KeyValuePair<string, string>> expectedErrors)
        {
            var validationResult = _tClassValidator.Validate(address);
            Assert.False(validationResult.IsValid);

            foreach (var expectedError in expectedErrors)
            {
                Assert.Contains(validationResult.Errors, (actualError) => actualError.ErrorMessage.Equals(expectedError.Value) && actualError.ErrorCode.Equals(expectedError.Key));
            }

            foreach (var actualError in validationResult.Errors)
            {
                Assert.Contains<KeyValuePair<string, string>>(expectedErrors, expectedError => expectedError.Value.Equals(actualError.ErrorMessage) && expectedError.Key.Equals(actualError.ErrorCode));
            }
        }

        public void Address_Should_Pass_When_MandatoryFieldsArePassed(TClass address)
        {
            var validationResult = _tClassValidator.Validate(address);
            Assert.True(validationResult.IsValid);
            Assert.Empty(validationResult.Errors);
        }
    }
}

namespace TestSuite.Validator
{
    public class AddressValidatorTest : ValidatorTest<Address, AddressValidator>
    {
        public AddressValidatorTest(AddressValidator addressValidator) : base(new AddressValidator())
        {
        }
        [Theory]
        [JsonDataReaderAttribute("AddressValidatorData", "Valid")]
        public void PositiveTest(Address address)
        {
            Address_Should_Pass_When_MandatoryFieldsArePassed(address);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我只是遇到了类似的错误,这是因为我忘记在测试类上实现IClassFixture。