我有一个相当复杂的集成测试,每个不同的测试用例都需要大量数据。
我的测试用例类如下:
public class TestCases
{
public static IEnumerable MatchingCases
{
get
{
yield return
new SearchSetup
{
MinimumMatches = 1,
BulletinSetups = new List<BulletinSetup>
{
new BulletinSetup
{
ParameterSetups = new List<ParameterSetup>
{
new ParameterSetup
{
FieldName = "Number",
ParameterName = "@Number",
Value = "TBS1001" + DateTime.Now.ToLocalTime()
}
}
}
},
FilterValues = new Dictionary<string, object> { { "Number", "TBS1001" } }
};
}
}
}
我的测试方法的标题是:
[Test, TestCaseSource(typeof(TestCases), "MatchingCases")]
public void Search_VariableFilter_NoAccountTeam_ResultIncludesExpected(SearchSetup searchSetup)
当我运行测试时,它返回不确定。当我单步执行代码时,我发现正在访问 MatchingCases 属性 getter,并且 yield return 语句在没有问题的情况下执行,但是没有调用测试方法本身——或者更确切地说,是不可预测的。
看,我已经写过一次这个问题,然后我尝试将测试类移出 testfixture 范围。当我这样做时,代码执行了一次,所以我放弃了我的问题。然后它停止执行了......
为什么我的测试方法没有被调用?
编辑:预测问题 - 这些是正在使用的支持类:
public class ParameterSetup
{
public string ParameterName { get; set; }
public string FieldName { get; set; }
public object Value { get; set; }
}
public class BulletinSetup
{
public List<ParameterSetup> ParameterSetups { get; set; }
}
public class SearchSetup
{
public List<BulletinSetup> BulletinSetups { get; set; }
public int MinimumMatches { get; set; }
public Dictionary<string, object> FilterValues { get; set; }
}
更新 - 第二天
关闭并重新加载 Visual Studio,并在不进行任何更改的情况下重新运行测试后,测试代码会重复执行。我开始怀疑这是一个暂时的故障。