C# 不存在泛型参数的单元测试
我想知道如何(或者是否需要)测试代码中涉及泛型集合的特定场景 我所拥有的是:C# 不存在泛型参数的单元测试,c#,unit-testing,generics,exception,testing,C#,Unit Testing,Generics,Exception,Testing,我想知道如何(或者是否需要)测试代码中涉及泛型集合的特定场景 我所拥有的是: // Function private void Func(FieldInfo fieldInfo) { if(fieldInfo.FieldType.IsGenericType) { // Only support List<> right now Type gen_type = fieldInfo.FieldType.GetGenericTypeDefinition(
// Function
private void Func(FieldInfo fieldInfo)
{
if(fieldInfo.FieldType.IsGenericType)
{
// Only support List<> right now
Type gen_type = fieldInfo.FieldType.GetGenericTypeDefinition();
if(gen_type != typeof(List<>))
{
throw new
NotSupportedException("Only Generic List is supported at this time");
}
// Find the generic list type
Type[] generic_types = fieldInfo.FieldType.GetGenericArguements();
if(generic_types.Length <= 0)
{
throw new
NotSupportedException("Generic List type not found!");
}
}
}
//函数
私有无效函数(字段信息字段信息)
{
if(fieldInfo.FieldType.IsGenericType)
{
//现在只有支持列表
类型gen_Type=fieldInfo.FieldType.GetGenericTypeDefinition();
if(gen_类型!=类型(列表))
{
抛出新的
NotSupportedException(“此时仅支持通用列表”);
}
//查找泛型列表类型
Type[]generic_types=fieldInfo.FieldType.GetGenericArguements();
如果(generic_types.Length读取上的MSDN页面,则该方法返回空数组的唯一时间似乎是表示的类型不是泛型类型。因为您知道此处表示的类型是泛型类型(即列表或列表),该方法将始终返回T或表示泛型参数的类型对象,IsGenericParameter属性的值为true
在当前状态下,泛型_-types数组永远不应该为空。我会说不,您不需要为它进行测试,不管您是在谈论单元测试,还是上面代码中的简单保护语句。这不适合于单元测试,因为它归结为两种情况之一:要么您最终测试framework(我们应该假设它已经被微软测试过了),或者最终测试单元测试实现的内部详细信息,这是一种测试反模式。对于guard语句,如果立即代码编写正确,则不应测试不可能的情况。此类运行时检查应保留用于运行时可能发生的事件,具体取决于nEnvironment,即使即时代码是正确的。您可能认为不是。我可能错了,但我认为您不可能在没有至少一个参数的情况下实现泛型类型。正如James所说,类似于var last=new List()的代码
应该被编译器捕获;我的2分钱是测试它是一种浪费。这听起来很合理,是一个很好的建议,谢谢你的回答