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()); }