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());
        
        }
复制代码

 

作者:Chuck Lu    GitHub    
posted @   ChuckLu  阅读(1175)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2017-11-28 Adding Kentico controls to the Visual Studio toolbox
2015-11-28 git lfs
2015-11-28 使用git对unity3d项目进行版本控制
2015-11-28 从unity3d官网下载教程
2012-11-28 异步Socket的完美代码[使用Async实现]
点击右上角即可分享
微信分享提示