首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xUnit -如何将(字符串、字符串)传递给InlineData

xUnit -如何将(字符串、字符串)传递给InlineData
EN

Stack Overflow用户
提问于 2022-09-29 13:48:22
回答 1查看 57关注 0票数 1

标题是很清楚的。如何将(string, string)传递给内联数据?

代码语言:javascript
复制
using System.Security.Cryptography;
using Xunit;

namespace Summer_Outfit.UnitTesting;

public class OutfitTests
{
    [Fact]
    public void Execute_DegreesTimeFromDay_ReturnsOutfitShoes()
    {
        // Arrange
        const int degrees = 20;
        const string timeFromDay = "Morning";
        var outfit = new Outfit();
        var expected = ("Shirt", "Moccasins");

        // Act
        var actual = outfit.Execute(degrees, timeFromDay);

        // Assert
        Assert.Equal(expected, actual);
    }
    
    [Theory]
    [InlineData(20, "Morning", ("Shirt", "Moccasins"))] // compile-time error here
    [InlineData(20, "Afternoon", ("Shirt", "Moccasins"))] // compile-time error here
    [InlineData(20, "Evening", ("Shirt", "Moccasins"))] // compile-time error here
    public void Execute_MultipleDegreesTimeFromDay_ReturnsOutfitShoes(int degrees, string timeFromDay, (string, string)expected)
    {
        // Arrange
        var outfit = new Outfit();

        // Act
        var actual = outfit.Execute(degrees, timeFromDay);

        // Assert
        Assert.Equal(expected, actual);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-29 15:13:24

根据@JoshuaRobinson在评论中给出的语言规范部分:

21.2.4属性参数类型属性类的位置参数和命名参数类型仅限于属性参数类型,即:

下列类型之一:bool, byte, char, double, float, int, long, sbyte, short, string, uint, ulong, ushort

object型。

System.Type型。

Enum类型。

上述类型的一维数组。

没有这些类型之一的构造函数参数或公共字段,不应用作属性规范中的位置参数或命名参数。

因此,如果不希望在方法中将它们分开,则可以使用数组作为不同的解决方法:

代码语言:javascript
复制
[InlineData(20, "Morning", new string[] {"Shirt", "Moccasins"})]
public void Execute_MultipleDegreesTimeFromDay_ReturnsOutfitShoes(int degrees, string timeFromDay, string[] expected)

但是,为了进行比较,您仍然需要用它做一个元组:

代码语言:javascript
复制
Assert.Equal((expected[0], expected[1]), actual);

如果希望将其保持为元组,则可以使用MemberDataClassData数据源。有关示例,请参见https://hamidmosalla.com/2017/02/25/xunit-theory-working-with-inlinedata-memberdata-classdata/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73896651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档