我有一个相当复杂的集成测试,在每个不同的测试用例中需要大量数据。
我的测试用例类如下:
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,并重新运行测试而不进行任何类型的更改后,测试代码会重复执行。我开始怀疑这是一个短暂的故障。
答案 0 :(得分:1)
由于重新加载VS测试方法执行正常。我正在把它弄成一个小问题来解决这个问题。