在MSTest测试中使用具有DynamicData属性的结构时无效数据?



我使用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接口,它似乎可以工作。

最新更新