Nunit 为什么不是';我的测试方法没有执行吗?
我有一个相当复杂的集成测试,在每个不同的测试用例中需要大量的数据 我的测试用例类如下所示:Nunit 为什么不是';我的测试方法没有执行吗?,nunit,testcasesource,Nunit,Testcasesource,我有一个相当复杂的集成测试,在每个不同的测试用例中需要大量的数据 我的测试用例类如下所示: public class TestCases { public static IEnumerable MatchingCases { get { yield return new SearchSetup { MinimumMatches = 1, BulletinSetups = new List<
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" } }
};
}
}
}
当我运行测试时,它返回非决定性结果。当我逐步遍历代码时,我发现MatchingCases属性getter正在被访问,并且yield-return语句执行w/o-issue,但是测试方法本身没有被调用——或者说,不可预测
看,我已经写了一次这个问题,然后我尝试将测试类移出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; }
}
公共类参数设置
{
公共字符串参数名称{get;set;}
公共字符串字段名{get;set;}
公共对象值{get;set;}
}
公共类公告安装
{
公共列表参数设置{get;set;}
}
公共类搜索设置
{
公共列表BulletinSetup{get;set;}
公共int最小匹配{get;set;}
公共字典筛选器值{get;set;}
}
更新-第二天
关闭并重新加载VisualStudio,在没有任何更改的情况下重新运行测试后,测试代码将重复执行。我开始怀疑这是一个暂时的小故障。因为重新加载与测试方法相比执行得很好。为了解决这个问题,我把它记为一个小故障
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; }
}