xunit inlinedata classdata memberdata

https://andrewlock.net/creating-parameterised-tests-in-xunit-with-inlinedata-classdata-and-memberdata/

MemberData

public class CalculatorTests
{
    [Theory]
    [MemberData(nameof(Data), MemberType= typeof(CalculatorData))]
    public void CanAddTheoryMemberDataMethod(int value1, int value2, int expected)
    {
        var calculator = new Calculator();

        var result = calculator.Add(value1, value2);

        Assert.Equal(expected, result);
    }
}

public class CalculatorData
{
    public static IEnumerable<object[]> Data =>
        new List<object[]>
        {
            new object[] { 1, 2, 3 },
            new object[] { -4, -6, -10 },
            new object[] { -2, 2, 0 },
            new object[] { int.MinValue, -1, int.MaxValue },
        };
}
public class VersionList
    {
        private static Dictionary<string, Version> dic;

        static VersionList()
        {
            dic = new Dictionary<string, Version>();
            dic.Add("05000007", new Version(5, 0, 0, 7));
            dic.Add("05000800", new Version(5, 0, 8, 0));
            dic.Add("05000900", new Version(5, 0, 9, 0));
        }

        public static IEnumerable<object[]> GetVersion(string key)
        {
            if (!dic.ContainsKey(key))
            {
                throw new Exception($"Can not find key {key} from VersionList.");
            }

            var list = new List<object[]>
            {
                new object[] {dic[key]},
            };

            return list;
        }
    }

让测试类继承VersionList

        [Theory]
        [MemberData(nameof(GetVersion), parameters: "05000007")]
        [MemberData(nameof(GetVersion), parameters: "05000800")]
        [MemberData(nameof(GetVersion), parameters: "05000900")]
        public void CmsUpgradeTest(Version tempVersion)
        {
            Output.WriteLine(tempVersion.ToString());
        
        }
原文地址:https://www.cnblogs.com/chucklu/p/10030894.html