【发布时间】:2016-02-10 14:14:20
【问题描述】:
我正在尝试创建一个数据驱动的测试,该测试多次调用一个方法,每次调用都有不同的输入。在这种特殊情况下,测试是验证一个类保持总时间的运行总和。
下面是测试代码:
public Enum IoState{On, Off}
public class PwmDataPoint
{
public IoState LineState { get; private set; }
public double SecondsAtState { get; private set; }
public PwmDataPoint(IoState lineState, double secondsAtState)
{
this.LineState = lineState;
this.SecondsAtState = secondsAtState;
}
}
public class PwmData
{
public double TotalSeconds {get; private set;} = 0;
public void AddNewDataPoint(PwmDataPoint addMe)
{
this.TotalSeconds+= addMe.SecondsAtState;
//Other data processing code that other tests will cover...
}
}
我正在尝试创建的测试将验证 PwmData.TotalSeconds 在调用 PwmData.AddNewDataPoint 时得到正确更新。
显然,PwmData.AddNewDataPoint 可以在 PwmData 对象的生命周期内被调用任意次数。
我正在尝试在 MSTest 中编写一个数据驱动的测试,但我不知道如何从我的 XML 测试数据文件中加载随机数量的数据点。
这是来自 XML 文件的片段:
<?xml version="1.0" encoding="utf-8" ?>
<TestData>
<TestDatum>
<PwmDataPoint>
<IoState>On</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<TotalTime>0.25</TotalTime>
</TestDatum>
<TestDatum>
<PwmDataPoint>
<IoState>On</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<PwmDataPoint>
<IoState>On</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<PwmDataPoint>
<IoState>Off</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<PwmDataPoint>
<IoState>On</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<PwmDataPoint>
<IoState>Off</IoState>
<SecondsAtState>0.25</SecondsAtState>
</PwmDataPoint>
<TotalTime>1.25</TotalTime>
</TestDatum>
</TestData>
每个TestDatum 都是运行测试所需的数据。在这种情况下,需要运行 2 个测试:第一个测试使用 1 个PwmDataPoint,第二个测试将使用 5 个PwmDataPoints。
我对数据驱动的 MSTest 比较陌生,我能找到的所有示例都有恒定数量的输入数据点。
如何从 XML 文件动态加载 MSTest 中的 N 个输入数据点?
【问题讨论】:
标签: unit-testing visual-studio-2015 mstest data-driven-tests