zoukankan      html  css  js  c++  java
  • Xunit笔记-属性标签

    步骤:

    • 创建Xunit测试项目
    • 运行测试项目后,菜单栏会出现“测试”,测试-窗口-测试资源管理器
    • 进入测试资源管理器后,点击全部运行即可

    测试方法属性标签:

    Fact:

    [Fact]用于无参测试方法

    [Fact]
            public void FailingTest()
            {
                Assert.Equal(5, Add(2, 2));
            }
    

    Theory:

    [Theory]配合[InlineData]可以直接在一个方法中测试多组参数,每一组参数会执行一次方法

    [Theory]
            [InlineData(3)]
            [InlineData(5)]
            [InlineData(6)]
            public void MyFirstTheory(int value)
            {
                Assert.True(IsOdd(value));
            }
    

    [Fact]和[Theory]还可以带两个参数,一个是修改显示名称,一个是跳过测试

    [Fact(DisplayName ="通过测试")]
            public void PassingTest()
            {
                Assert.Equal(4, Add(2, 2));
            }
    
            [Fact(Skip ="跳过测试")]
            public void FailingTest()
            {
                Assert.Equal(5, Add(2, 2));
            }
    

    MemberData特性:

    还可以使用[MemberData],测试多组参数,代码更简洁

    public class InternalHealthDamageTestData
        {
            private static readonly List<object[]> Data = new List<object[]>
            {
                new object[] {0, 100},
                new object[] {1, 99},
                new object[] {50, 50},
                new object[] {101, 1}
            };
    
            public static IEnumerable<object[]> TestData => Data;
        }
    public class NonPlayerCharacterShould
        {
            [Theory]
            [MemberData(nameof(InternalHealthDamageTestData.TestData), MemberType = typeof(InternalHealthDamageTestData))]
            public void TakeDamage(int damage, int expectedHealth)
            {
                NonPlayerCharacter sut = new NonPlayerCharacter();
    
                sut.TakeDamage(damage);
    
                Assert.Equal(expectedHealth, sut.Health);
            }
        }
    

    CustomDataAttribute特性

    用来自定义数据属性标签

    public class HealthDamageDataAttribute : DataAttribute
        {
            public override IEnumerable<object[]> GetData(MethodInfo testMethod)
            {
                yield return new object[] { 0, 100 };
                yield return new object[] { 1, 99 };
                yield return new object[] { 50, 50 };
                yield return new object[] { 101, 1 };
            }
        }
    public class NonPlayerCharacterShould
        {
            [Theory]
            [HealthDamageData]
            public void TakeDamage(int damage, int expectedHealth)
            {
                NonPlayerCharacter sut = new NonPlayerCharacter();
    
                sut.TakeDamage(damage);
    
                Assert.Equal(expectedHealth, sut.Health);
            }
        }
    

    参考:
    http://www.cnblogs.com/cgzl/p/8444423.html

  • 相关阅读:
    给网站添加icon图标
    jquery动态改变元素内容
    jQuery判断checkbox是否选中的3种方法
    jquery datatable设置垂直滚动后,表头(th)错位问题
    网页弹出[Object HTMLDivElement],怎么取值?
    JS获取元素属性和自定义属性
    Thymeleaf显示Map集合数据
    带搜索框的select下拉框
    JQuery获取浏览器窗口的高度和宽度
    鼠标悬停在一个标签上时,显示一段文字
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/13633708.html
Copyright © 2011-2022 走看看