Table of Contents
  v2 v3   Error

xUnit1036

"There is no matching method parameter"

Cause

When you use [MemberData] to target a method and pass that method arguments, you must provide the correct number of arguments for the method data function's parameters.

Reason for rule

Providing too many arguments will cause your test to fail because the method data function cannot be called.

How to fix violations

To fix a violation of this rule, either remove the excess data or add additional parameters.

Examples

Violates

using Xunit;

public class xUnit1036
{
    public static TheoryData<int> TestData(int n) =>
        new() { n };

    [Theory]
    [MemberData(nameof(TestData), 42, 2112)]
    public void TestMethod(int _)
    { }
}

Does not violate

using Xunit;

public class xUnit1036
{
    public static TheoryData<int> TestData(int n) =>
        new() { n };

    [Theory]
    [MemberData(nameof(TestData), 42)]
    public void TestMethod(int _)
    { }
}
using Xunit;

public class xUnit1036
{
    public static TheoryData<int> TestData(int n, int d) =>
        new() { n * d };

    [Theory]
    [MemberData(nameof(TestData), 42, 2112)]
    public void TestMethod(int _)
    { }
}