0

我有一个相当复杂的集成测试,每个不同的测试用例都需要大量数据。

我的测试用例类如下:

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,并在不进行任何更改的情况下重新运行测试后,测试代码会重复执行。我开始怀疑这是一个暂时的故障。

4

1 回答 1

1

由于重新加载 VS,测试方法执行得很好。我把它归结为一个小故障来解决这个问题。

于 2012-10-09T12:11:15.597 回答