简体   繁体   English

单元测试:使用MSTest将复杂对象作为输入参数发送到我的测试方法

[英]Unit testing: Sending complex object as a input parameter to my test method using MSTest

I'm trying to send a List<DataStatusItem> as a input parameter to my unit test method using DataRow attribute as below, 我正在尝试使用DataRow属性将List<DataStatusItem>作为输入参数发送到我的单元测试方法,如下所示,

[TestClass]
public class UpdateProcessingTestController
{
    private List<DataStatusItem> DataStatusItemsTestSetup = new List<DataStatusItem>() {
            new DataStatusItem { DataItemID = 1, DataItemCurrentStatusID = 1, DataItemStatusID = 1, DateEffective = DateTime.Now }
    };

    private readonly Mock<IEmployee> moqEmployee;

    public UpdateProcessingTestController()
    {
        moqEmployee = new Mock<IEmployee>();
    }

    [TestMethod]
    [DataRow(DataStatusItemsTestSetup, 1, 8, 1)] // **This is where it is throwing me compilation error**
    public void SetDataItems(List<DataStatusItem> DataStatusItems,int brand, int dataType, int processingStatus)
}

Please let me know how to send the List as a input parameter to my test method. 请告诉我如何将List作为输入参数发送到我的测试方法。

Use DynamicData Attribute , Here is an example: 使用DynamicData属性 ,这是一个例子:

public class DataStatusItem
{
    public int DataItemID { get; set; }
    public int DataItemCurrentStatusID { get; set; }
    public int DataItemStatusID { get; set; }
    public DateTime DateEffective { get; set; }
}

[TestClass]
public class UpdateProcessingTestController
{
    static IEnumerable<object[]> DataStatusItemsTestSetup
    {
        get
        {
            return new[]
            {
                new object[]
                {
                    new List<DataStatusItem>
                    {
                        new DataStatusItem { DataItemID = 1, DataItemCurrentStatusID = 1, DataItemStatusID = 1, DateEffective = DateTime.Now },
                        new DataStatusItem { DataItemID = 2, DataItemCurrentStatusID = 2, DataItemStatusID = 2, DateEffective = DateTime.Now },
                    },
                    1, // brand
                    2, // dataType
                    3  // processingStatus
                }
            };
        }
    }

    [TestMethod]
    [DynamicData(nameof(DataStatusItemsTestSetup))]
    public void SetDataItems(List<DataStatusItem> dataStatusItems, int brand, int dataType, int processingStatus)
    {
        Assert.AreEqual(2, dataStatusItems.Count);
        Assert.AreEqual(1, brand);
        Assert.AreEqual(2, dataType);
        Assert.AreEqual(3, processingStatus);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM