我使用MSTest. framework/MSTest。TestAdapter 2.2.10 .
我试图通过使用DynamicData
属性将测试数据传递给Test_Method
。当MyDateTime
时,struct调试Test_Method
,testData
的_date
字段日期错误。但是,当我改变MyDateTime
为类,然后我就得到了正确的日期。有什么问题吗?我的MyDateTime
装箱/拆箱有问题吗?
[TestMethod]
[DynamicData(nameof(DataForTestMethod), DynamicDataSourceType.Property)]
public void Test_Method(MyDateTime testData)
{
}
public struct MyDateTime
{
private DateTime _date;
public MyDateTime(DateTime dt)
{
_date = dt;
}
}
public static IEnumerable<object[]> DataForTestMethod
{
get
{
var dt = new DateTime(2022,04,30,21,04,22);
var myDate = new MyDateTime(dt);
yield return new object[] { myDate };
}
}
在使用。net反编译器花了一些时间后,似乎一个结构应该实现ISerializable
接口,以便MSTest框架通过DynamicDataAttribute
正确返回数据。ISerializable.GetObjectData
的体甚至可以为空(!)。我找不到什么代码负责加载DynamicDataAttribute
来解释这一点,但如果我只是添加ISerializable
接口,它似乎可以工作。