为什么我的测试方法不执行?

时间:2012-10-03 19:02:54

标签: nunit testcasesource

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

我的测试用例类如下:

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

1 个答案:

答案 0 :(得分:1)

由于重新加载VS测试方法执行正常。我正在把它弄成一个小问题来解决这个问题。